• John Garry's avatar
    perf tools: Stop depending on .git files for building PERF-VERSION-FILE · d4ff9265
    John Garry authored
    This essentially reverts commit c72e3f04 ("tools/perf/build:
    Speed up git-version test on re-make") and commit 4e666cdb
    ("perf tools: Fix dependency for version file creation")
    
    In commit c72e3f04 ("tools/perf/build: Speed up git-version test
    on re-make"), a makefile dependency on .git/HEAD was added. The
    background is that running PERF-VERSION-FILE is relatively slow, and
    commands like "git describe" are particularly slow.
    
    In commit 4e666cdb ("perf tools: Fix dependency for version file
    creation"), an additional dependency on .git/ORIG_HEAD was added, as
    .git/HEAD may not change for "git reset --hard HEAD^" command. However,
    depending on whether we're on a branch or not, a "git cherry-pick" may
    not lead to the version being updated.
    
    As discussed with the git community in [0], using git internal files for
    dependencies is not reliable. Commit 4e666cdb also breaks some build
    scenarios [1].
    
    As mentioned, c72e3f04 ("tools/perf/build: Speed up git-version
    test on re-make") was added to speed up the build. However in commit
    7572733b ("perf tools: Fix version kernel tag") we removed the
    call to "git describe", so just revert Makefile.perf back to same as pre
    c72e3f04 ("tools/perf/build: Speed up git-version test on
    re-make") and the build should not be so slow, as below:
    
    Pre 7572733b:
    
      $> time util/PERF-VERSION-GEN
        PERF_VERSION = 5.17.rc8.g4e666cdb
    
      real    0m0.110s
      user    0m0.091s
      sys     0m0.019s
    
    Post 7572733b:
    
      $> time util/PERF-VERSION-GEN
        PERF_VERSION = 5.17.rc8.g7572733b
    
      real    0m0.039s
      user    0m0.036s
      sys     0m0.007s
    
    [0] https://lore.kernel.org/git/87wngkpddp.fsf@igel.home/T/#m4a4dd6de52fdbe21179306cd57b3761eb07f45f8
    [1] https://lore.kernel.org/linux-perf-users/20220329093120.4173283-1-matthieu.baerts@tessares.net/T/#u
    
    Committer testing:
    
    After a fresh rebuild using 'make -C tools/perf O=/tmp/build/perf install-bin':
    
      $ perf -v
      perf version 5.17.g162f9db407b6
      $ git log --oneline -1
      162f9db407b6a6e5 (HEAD -> perf/core) perf tools: Stop depending on .git files for building PERF-VERSION-FILE
      $
    
    Now using a detached tarball, i.e. outside the kernel source tree:
    
      $ ls -la perf*tar
      ls: cannot access 'perf*tar': No such file or directory
      $ make perf-tar-src-pkg
        TAR
        PERF_VERSION = 5.17.g31d10b3ef133
      $ ls -la perf*tar
      -rw-r--r--. 1 acme acme 22241280 Mar 30 13:26 perf-5.17.0.tar
      $ mv perf-5.17.0.tar /tmp
      $ cd /tmp
      $ tar xf perf-5.17.0.tar
      $ cd perf-5.17.0/
      $ make -C tools/perf |& tail
        CC      util/pmu.o
        CC      util/pmu-flex.o
        CC      util/expr-flex.o
        CC      util/expr.o
        LD      util/scripting-engines/perf-in.o
        LD      util/intel-pt-decoder/perf-in.o
        LD      util/perf-in.o
        LD      perf-in.o
        LINK    perf
      make: Leaving directory '/tmp/perf-5.17.0/tools/perf'
      $ tools/perf/perf -v
      perf version 5.17.g31d10b3ef133
      $ pwd
      /tmp/perf-5.17.0
      $ cat PERF-VERSION-FILE
      #define PERF_VERSION "5.17.g31d10b3ef133"
      $
    
    Fixes: 4e666cdb ("perf tools: Fix dependency for version file creation")
    Reported-by: default avatarMatthieu Baerts <matthieu.baerts@tessares.net>
    Signed-off-by: default avatarJohn Garry <john.garry@huawei.com>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Tested-by: default avatarMatthieu Baerts <matthieu.baerts@tessares.net>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: John Garry <john.garry@huawei.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: https://lore.kernel.org/r/1648635774-14581-1-git-send-email-john.garry@huawei.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    d4ff9265
Makefile.perf 40.2 KB