git: 42b098cb9139 - main - devel/perfetto: new port

From: Siva Mahadevan <siva_at_FreeBSD.org>
Date: Wed, 08 Jul 2026 21:36:11 UTC
The branch main has been updated by siva:

URL: https://cgit.FreeBSD.org/ports/commit/?id=42b098cb9139af4cb1e4ff3882bc60c17ad8e890

commit 42b098cb9139af4cb1e4ff3882bc60c17ad8e890
Author:     Siva Mahadevan <siva@FreeBSD.org>
AuthorDate: 2026-04-30 14:38:09 +0000
Commit:     Siva Mahadevan <siva@FreeBSD.org>
CommitDate: 2026-07-08 21:34:25 +0000

    devel/perfetto: new port
    
    thj@ and adrian@ did all of the underlying FreeBSD-specific
    porting work and testing. I helped with creating the Ports
    tree Makefile.
    
    Co-authored-by:         Tom Jones <thj@FreeBSD.org>
    Co-authored-by:         Adrian Chadd <adrian@FreeBSD.org>
    Differential Revision:  https://reviews.freebsd.org/D56762
---
 devel/Makefile                                  |  1 +
 devel/perfetto/Makefile                         | 71 +++++++++++++++++++++++++
 devel/perfetto/distinfo                         | 25 +++++++++
 devel/perfetto/files/patch-tools_gen__c__protos | 10 ++++
 devel/perfetto/pkg-descr                        |  6 +++
 devel/perfetto/pkg-plist                        | 10 ++++
 6 files changed, 123 insertions(+)

diff --git a/devel/Makefile b/devel/Makefile
index 074aaf1b15c5..e1a29b25020a 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -4303,6 +4303,7 @@
     SUBDIR += pecl-zookeeper
     SUBDIR += pegtl
     SUBDIR += pep8
+    SUBDIR += perfetto
     SUBDIR += performance
     SUBDIR += perlconsole
     SUBDIR += phabricator
diff --git a/devel/perfetto/Makefile b/devel/perfetto/Makefile
new file mode 100644
index 000000000000..88c25e8f9682
--- /dev/null
+++ b/devel/perfetto/Makefile
@@ -0,0 +1,71 @@
+PORTNAME=	perfetto
+DISTVERSIONPREFIX=	v
+DISTVERSION=	54.0
+CATEGORIES=	devel
+
+MAINTAINER=	siva@FreeBSD.org
+COMMENT=	System profiling, app tracing, and trace analysis
+WWW=		https://perfetto.dev/
+
+MASTER_SITES=	https://storage.googleapis.com/perfetto/:perfetto
+DISTFILES=	sqlite-amalgamation-3500300.zip:perfetto \
+		llvm-project-617a15a9eac96088ae5e9134248d8236e34b91b1.tgz:perfetto
+
+LICENSE=	APACHE20
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+PATCH_SITES=	https://github.com/google/perfetto/commit/:upstream \
+		https://codeberg.org/tj/perfetto/commit/:tj
+PATCHFILES=	0a47f21e97615e0259dcb8589190aa0912c47bbe.patch:upstream \
+		d400ae17f63c91846fb489dc716109fbfac311a4.patch:tj \
+		0e50ef0b9372580b18c2693a1f4a95cb8ee8abc7.patch:tj \
+		6620157cb2a8cf3334219fce26cd91d8089a8cd2.patch:tj \
+		1b24730762d082dae073f096d5e666e0fc83a1bb.patch:tj
+
+PATCH_DIST_STRIP=	-p1
+
+BUILD_DEPENDS=	gn:devel/gn
+
+USES=		compiler:c++17-lang ninja python:build
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	google
+GH_TUPLE=	protocolbuffers:protobuf:v31.1:buildtools_protobuf/buildtools/protobuf \
+		abseil:abseil-cpp:20250512.1:buildtools_abseil_cpp/buildtools/abseil-cpp \
+		sqlite:sqlite:version-3.50.3:buildtools_sqlite_src/buildtools/sqlite_src \
+		libexpat:libexpat:R_2_6_2:buildtools_expat/buildtools/expat/src
+
+GN_ARGS=	is_debug=false \
+		skip_buildtools_check=true \
+		perfetto_use_system_zlib=true \
+		extra_cflags="-I${LOCALBASE}/include -Wno-unused-parameter" \
+		extra_ldflags="-L${LOCALBASE}/lib"
+
+BINARY_ALIAS=	python3=${PYTHON_CMD}
+
+BUILD_WRKSRC=	${WRKSRC}/out
+
+ALL_TARGET=	dtrace_probe freebsd_power freebsd_sys libperfetto_c.so perfetto tracebox traceconv traced traced_relay
+
+post-extract:
+	${MV} ${WRKDIR}/sqlite-amalgamation-3500300 ${WRKSRC}/buildtools/sqlite
+	${MV} ${WRKDIR}/llvm-project ${WRKSRC}/buildtools/llvm-project
+
+do-configure:
+	cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} gn gen out --args='${GN_ARGS}' && ${SETENV} ${CONFIGURE_ENV} gn ls out --args='${GN_ARGS}'
+	cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} tools/gen_c_protos \
+		--proto protos/perfetto/trace/power/power_rails.proto \
+		--proto protos/perfetto/trace/power/battery_counters.proto \
+		--proto protos/perfetto/trace/system_info/cpu_info.proto \
+		--proto protos/perfetto/trace/sys_stats/sys_stats.proto \
+		--proto protos/perfetto/common/sys_stats_counters.proto \
+		${BUILD_WRKSRC}
+
+do-install:
+	cd ${BUILD_WRKSRC} && ${INSTALL_PROGRAM} \
+		dtrace_probe freebsd_power freebsd_sys perfetto tracebox traceconv traced traced_relay \
+		${STAGEDIR}${PREFIX}/bin
+	${INSTALL_PROGRAM} ${BUILD_WRKSRC}/libperfetto_c.so ${STAGEDIR}${PREFIX}/lib
+	${INSTALL_DATA} ${BUILD_WRKSRC}/libperfetto.a ${STAGEDIR}${PREFIX}/lib
+
+.include <bsd.port.mk>
diff --git a/devel/perfetto/distinfo b/devel/perfetto/distinfo
new file mode 100644
index 000000000000..35fd277f71d6
--- /dev/null
+++ b/devel/perfetto/distinfo
@@ -0,0 +1,25 @@
+TIMESTAMP = 1783544597
+SHA256 (sqlite-amalgamation-3500300.zip) = 9ad6d16cbc1df7cd55c8b55127c82a9bca5e9f287818de6dc87e04e73599d754
+SIZE (sqlite-amalgamation-3500300.zip) = 2845433
+SHA256 (llvm-project-617a15a9eac96088ae5e9134248d8236e34b91b1.tgz) = 7e2541446a27f2a09a84520da7bc93cd71749ba0f17318f2d5291fbf45b97956
+SIZE (llvm-project-617a15a9eac96088ae5e9134248d8236e34b91b1.tgz) = 83475
+SHA256 (google-perfetto-v54.0_GH0.tar.gz) = 8a6144d81592e00fb9e75da42483a2544315b25e3113845505d69950083913c1
+SIZE (google-perfetto-v54.0_GH0.tar.gz) = 49105061
+SHA256 (protocolbuffers-protobuf-v31.1_GH0.tar.gz) = c3a0a9ece8932e31c3b736e2db18b1c42e7070cd9b881388b26d01aa71e24ca2
+SIZE (protocolbuffers-protobuf-v31.1_GH0.tar.gz) = 9602477
+SHA256 (abseil-abseil-cpp-20250512.1_GH0.tar.gz) = 9b7a064305e9fd94d124ffa6cc358592eb42b5da588fb4e07d09254aa40086db
+SIZE (abseil-abseil-cpp-20250512.1_GH0.tar.gz) = 2221441
+SHA256 (sqlite-sqlite-version-3.50.3_GH0.tar.gz) = ced5a0e1928b8851f5f2176a521241ac42746233b5cd02341c1d9fa40d5ca222
+SIZE (sqlite-sqlite-version-3.50.3_GH0.tar.gz) = 12992292
+SHA256 (libexpat-libexpat-R_2_6_2_GH0.tar.gz) = fbd032683370d761ba68dba2566d3280a154f5290634172d60a79b24d366d9dc
+SIZE (libexpat-libexpat-R_2_6_2_GH0.tar.gz) = 8416128
+SHA256 (0a47f21e97615e0259dcb8589190aa0912c47bbe.patch) = 7aa9dfbe2ee1509b1253859681b34efa135419c51a9f17be817e6e0735d531d5
+SIZE (0a47f21e97615e0259dcb8589190aa0912c47bbe.patch) = 1432
+SHA256 (d400ae17f63c91846fb489dc716109fbfac311a4.patch) = 6881cd5790888fedb4f8894c1cccd21e9b3876249ef0823a77593af0fdcbb0e7
+SIZE (d400ae17f63c91846fb489dc716109fbfac311a4.patch) = 20290
+SHA256 (0e50ef0b9372580b18c2693a1f4a95cb8ee8abc7.patch) = bb89d2358c9299b5c4a387f685565c20ef878b5eb476f211350f7d226a8b5a3d
+SIZE (0e50ef0b9372580b18c2693a1f4a95cb8ee8abc7.patch) = 19299
+SHA256 (6620157cb2a8cf3334219fce26cd91d8089a8cd2.patch) = 4a0929ceea5ac478d69e56282100c44f839add744ccbcf81c2ee92a1847c84b4
+SIZE (6620157cb2a8cf3334219fce26cd91d8089a8cd2.patch) = 2159
+SHA256 (1b24730762d082dae073f096d5e666e0fc83a1bb.patch) = 085452de9e97cfe272f6bc0ca6d8842009f2b6ce7ad08eaa9e8b8e40971185c5
+SIZE (1b24730762d082dae073f096d5e666e0fc83a1bb.patch) = 22460
diff --git a/devel/perfetto/files/patch-tools_gen__c__protos b/devel/perfetto/files/patch-tools_gen__c__protos
new file mode 100644
index 000000000000..204e81ea3b24
--- /dev/null
+++ b/devel/perfetto/files/patch-tools_gen__c__protos
@@ -0,0 +1,10 @@
+--- tools/gen_c_protos.orig	2026-05-07 14:48:33 UTC
++++ tools/gen_c_protos
+@@ -218,7 +218,6 @@ OUTPUT:
+           )
+ 
+           tmpfilename = os.path.join(tmpdirname, transform_extension(source))
+-          clang_format(tmpfilename)
+           if source.startswith(sources['path_strip_prefix']):
+             targetfilename = source[len(sources['path_strip_prefix']):]
+           else:
diff --git a/devel/perfetto/pkg-descr b/devel/perfetto/pkg-descr
new file mode 100644
index 000000000000..7d3cadd984a9
--- /dev/null
+++ b/devel/perfetto/pkg-descr
@@ -0,0 +1,6 @@
+Perfetto is an open-source suite of SDKs, daemons and tools which use tracing
+to help developers understand the behaviour of complex systems and root-cause
+functional and performance issues on client and embedded systems.
+
+It is a production-grade tool that is the default tracing system for the
+Android operating system and the Chromium browser.
diff --git a/devel/perfetto/pkg-plist b/devel/perfetto/pkg-plist
new file mode 100644
index 000000000000..a64eb7cd6447
--- /dev/null
+++ b/devel/perfetto/pkg-plist
@@ -0,0 +1,10 @@
+bin/dtrace_probe
+bin/freebsd_power
+bin/freebsd_sys
+bin/perfetto
+bin/tracebox
+bin/traceconv
+bin/traced
+bin/traced_relay
+lib/libperfetto.a
+lib/libperfetto_c.so