mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-10-03 17:34:12 +02:00
7ec13cbc1a
CMake fetches pugixml, SingleApplication and the three KDE Frameworks modules by git tag. A tag is a mutable pointer that its owner can move, so two builds of the same QElectroTech commit can silently get different third-party sources, and a compromised upstream account can change what every builder downloads without anything changing in this repository. Pinning each dependency to the commit its tag currently points at closes that, while keeping the tag name in a trailing comment so the intended version stays readable. No versions change. Every pinned commit is the one its tag resolves to, checked with git ls-remote and confirmed by fetching each one and verifying that git describe reports exactly the tag. The three KDE modules live in separate repositories and therefore need separate commits, so the single KF_GIT_TAG variable becomes three per-module variables; passing -DKF_GIT_TAG=<ref> still selects one ref for all three, unpinned, exactly as before, and KF_GIT_TAG stays defined so the build summary in define_definitions.cmake is unaffected. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
37 lines
1.3 KiB
CMake
37 lines
1.3 KiB
CMake
# Copyright 2006 The QElectroTech Team
|
|
# This file is part of QElectroTech.
|
|
#
|
|
# QElectroTech is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 2 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# QElectroTech is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
message(" - fetch_pugixml")
|
|
|
|
Include(FetchContent)
|
|
|
|
option(BUILD_PUGIXML "Build pugixml library, use system one otherwise" YES)
|
|
|
|
if(BUILD_PUGIXML)
|
|
|
|
# Pinned to the commit v1.15 points at, not to the tag itself: a tag is a
|
|
# mutable pointer that the upstream owner can move, so fetching by tag means
|
|
# a future build can silently get different code than this one did.
|
|
FetchContent_Declare(
|
|
pugixml
|
|
GIT_REPOSITORY https://github.com/zeux/pugixml.git
|
|
GIT_TAG ee86beb30e4973f5feffe3ce63bfa4fbadf72f38) # v1.15
|
|
set(PUGIXML_INSTALL OFF CACHE INTERNAL "")
|
|
FetchContent_MakeAvailable(pugixml)
|
|
else()
|
|
find_package(pugixml REQUIRED)
|
|
endif()
|