Fix infinite loop in make

Build is stuck in an infinite loop with make 4.4. Fix it.

Also remove explicit library dependency to make fedpkg lint happy. Let
rpmbuild take care of dependencies.

Resolves: rhbz#2171770

Signed-off-by: Jerome Marchand <jmarchan@redhat.com>
This commit is contained in:
Jerome Marchand 2023-03-31 12:26:18 +02:00
parent d9631ac81a
commit 93cd9d216e
2 changed files with 108 additions and 4 deletions

View File

@ -0,0 +1,101 @@
From a0aebf2d532b441f13d25d666c9845cbff568c95 Mon Sep 17 00:00:00 2001
From: Michal Sojka <michal.sojka@cvut.cz>
Date: Mon, 26 Dec 2022 17:49:51 +0100
Subject: [PATCH] trace-cmd: Allow building with GNU Make 4.4
Make 4.4 introduces several backward incompatibilities and the result
is that building trace-cmd with it never finishes. It seems that make
ends up in some kind of infinite recursion. The symptoms are:
$ make -d
GNU Make 4.4
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Reading makefiles...
Reading makefile 'Makefile'...
Makefile:79: not recursively expanding pkgconfig_dir to export to shell function
Makefile:79: not recursively expanding pkgconfig_dir to export to shell function
Makefile:224: not recursively expanding LIBTRACECMD_SHARED_VERSION to export to shell function
Makefile:79: not recursively expanding pkgconfig_dir to export to shell function
Makefile:224: not recursively expanding LIBTRACECMD_SHARED_VERSION to export to shell function
Makefile:225: not recursively expanding LIBTRACECMD_SHARED_SO to export to shell function
Makefile:79: not recursively expanding pkgconfig_dir to export to shell function
Makefile:79: not recursively expanding pkgconfig_dir to export to shell function
Build succeeds if recursively expanded variables (defined with '='),
which use $(shell ...) as its value, are replaced with simply expanded
variables (defined with ':=').
Link: https://lore.kernel.org/linux-trace-devel/20221226164951.2632069-1-michal.sojka@cvut.cz
Signed-off-by: Michal Sojka <michal.sojka@cvut.cz>
Tested-by: Daniel Wagner <dwagner@suse.de>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
---
Makefile | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/Makefile b/Makefile
index e67cb77e..be3b0616 100644
--- a/Makefile
+++ b/Makefile
@@ -221,8 +221,8 @@ LIBS ?= -ldl
LIBTRACECMD_DIR = $(obj)/lib/trace-cmd
LIBTRACECMD_STATIC = $(LIBTRACECMD_DIR)/libtracecmd.a
LIBTRACECMD_SHARED = $(LIBTRACECMD_DIR)/libtracecmd.so.$(LIBTRACECMD_VERSION)
-LIBTRACECMD_SHARED_VERSION = $(shell echo $(LIBTRACECMD_SHARED) | sed -e 's/\(\.so\.[0-9]*\).*/\1/')
-LIBTRACECMD_SHARED_SO = $(shell echo $(LIBTRACECMD_SHARED) | sed -e 's/\(\.so\).*/\1/')
+LIBTRACECMD_SHARED_VERSION := $(shell echo $(LIBTRACECMD_SHARED) | sed -e 's/\(\.so\.[0-9]*\).*/\1/')
+LIBTRACECMD_SHARED_SO := $(shell echo $(LIBTRACECMD_SHARED) | sed -e 's/\(\.so\).*/\1/')
export LIBTRACECMD_STATIC LIBTRACECMD_SHARED
export LIBTRACECMD_SHARED_VERSION LIBTRACECMD_SHARED_SO
@@ -230,12 +230,12 @@ export LIBTRACECMD_SHARED_VERSION LIBTRACECMD_SHARED_SO
LIBTRACEEVENT=libtraceevent
LIBTRACEFS=libtracefs
-TEST_LIBTRACEEVENT = $(shell sh -c "$(PKG_CONFIG) --atleast-version $(LIBTRACEEVENT_MIN_VERSION) $(LIBTRACEEVENT) > /dev/null 2>&1 && echo y")
-TEST_LIBTRACEFS = $(shell sh -c "$(PKG_CONFIG) --atleast-version $(LIBTRACEFS_MIN_VERSION) $(LIBTRACEFS) > /dev/null 2>&1 && echo y")
+TEST_LIBTRACEEVENT := $(shell sh -c "$(PKG_CONFIG) --atleast-version $(LIBTRACEEVENT_MIN_VERSION) $(LIBTRACEEVENT) > /dev/null 2>&1 && echo y")
+TEST_LIBTRACEFS := $(shell sh -c "$(PKG_CONFIG) --atleast-version $(LIBTRACEFS_MIN_VERSION) $(LIBTRACEFS) > /dev/null 2>&1 && echo y")
ifeq ("$(TEST_LIBTRACEEVENT)", "y")
-LIBTRACEEVENT_CFLAGS = $(shell sh -c "$(PKG_CONFIG) --cflags $(LIBTRACEEVENT)")
-LIBTRACEEVENT_LDLAGS = $(shell sh -c "$(PKG_CONFIG) --libs $(LIBTRACEEVENT)")
+LIBTRACEEVENT_CFLAGS := $(shell sh -c "$(PKG_CONFIG) --cflags $(LIBTRACEEVENT)")
+LIBTRACEEVENT_LDLAGS := $(shell sh -c "$(PKG_CONFIG) --libs $(LIBTRACEEVENT)")
else
.PHONY: warning
warning:
@@ -253,8 +253,8 @@ endif
export LIBTRACEEVENT_CFLAGS LIBTRACEEVENT_LDLAGS
ifeq ("$(TEST_LIBTRACEFS)", "y")
-LIBTRACEFS_CFLAGS = $(shell sh -c "$(PKG_CONFIG) --cflags $(LIBTRACEFS)")
-LIBTRACEFS_LDLAGS = $(shell sh -c "$(PKG_CONFIG) --libs $(LIBTRACEFS)")
+LIBTRACEFS_CFLAGS := $(shell sh -c "$(PKG_CONFIG) --cflags $(LIBTRACEFS)")
+LIBTRACEFS_LDLAGS := $(shell sh -c "$(PKG_CONFIG) --libs $(LIBTRACEFS)")
else
.PHONY: warning
warning:
@@ -324,11 +324,11 @@ endif
export ZLIB_LDLAGS
ifndef NO_LIBZSTD
-TEST_LIBZSTD = $(shell sh -c "$(PKG_CONFIG) --atleast-version 1.4.0 libzstd > /dev/null 2>&1 && echo y")
+TEST_LIBZSTD := $(shell sh -c "$(PKG_CONFIG) --atleast-version 1.4.0 libzstd > /dev/null 2>&1 && echo y")
ifeq ("$(TEST_LIBZSTD)", "y")
-LIBZSTD_CFLAGS = $(shell sh -c "$(PKG_CONFIG) --cflags libzstd")
-LIBZSTD_LDLAGS = $(shell sh -c "$(PKG_CONFIG) --libs libzstd")
+LIBZSTD_CFLAGS := $(shell sh -c "$(PKG_CONFIG) --cflags libzstd")
+LIBZSTD_LDLAGS := $(shell sh -c "$(PKG_CONFIG) --libs libzstd")
CFLAGS += -DHAVE_ZSTD
ZSTD_INSTALLED=1
$(info Have ZSTD compression support)
--
2.39.2

View File

@ -6,12 +6,9 @@
Name: trace-cmd
Version: %{srcversion}
Release: 2%{?dist}
Release: 3%{?dist}
License: GPLv2 and LGPLv2
Summary: A user interface to Ftrace
Requires: libtracecmd
Requires: libtracefs
Requires: libtraceevent
ExcludeArch: %{ix86} %{arm}
@ -24,6 +21,8 @@ Source0: https://git.kernel.org/pub/scm/utils/trace-cmd/trace-cmd.git/snapshot/t
Source1: trace-cmd.conf
Source2: trace-cmd.service
Source3: 98-trace-cmd.rules
Patch0: trace-cmd-Allow-building-with-GNU-Make-4.4.patch
BuildRequires: make
BuildRequires: gcc
BuildRequires: xmlto
@ -110,6 +109,10 @@ rm -rf %{buildroot}/%{_mandir}/man3/*
%{_libdir}/%{name}/python/
%changelog
* Fri Mar 31 2023 Jerome Marchand <jmarchan@redhat.com> - 3.1.4-3
- Fix build: RHBZ#2171770
- Also remove explicit lib dependency that fedpkg lint complains about.
* Sat Jan 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.4-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild