Makefile: wire up build option for deprecated features
Withmaint57ec9254eb
(docs: introduce document to announce breaking changes, 2024-06-14), we have introduced a new document that tracks upcoming breaking changes in the Git project. In2454970930
(BreakingChanges: early adopter option, 2024-10-11) we have amended the document a bit to mention that any introduced breaking changes must be accompanied by logic that allows us to enable the breaking change at compile-time. While we already have two breaking changes lined up, neither of them has such a switch because they predate those instructions. Introduce the proposed `WITH_BREAKING_CHANGES` preprocessor macro and wire it up with both our Makefiles and Meson. This does not yet wire up the build flag for existing deprecations. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
parent
2187ce76c5
commit
c5bc9a7f94
|
@ -45,3 +45,4 @@ GITWEBDIR=@GITWEBDIR@
|
||||||
USE_GETTEXT_SCHEME=@USE_GETTEXT_SCHEME@
|
USE_GETTEXT_SCHEME=@USE_GETTEXT_SCHEME@
|
||||||
LOCALEDIR=@LOCALEDIR@
|
LOCALEDIR=@LOCALEDIR@
|
||||||
BROKEN_PATH_FIX=@BROKEN_PATH_FIX@
|
BROKEN_PATH_FIX=@BROKEN_PATH_FIX@
|
||||||
|
WITH_BREAKING_CHANGES=@WITH_BREAKING_CHANGES@
|
||||||
|
|
5
Makefile
5
Makefile
|
@ -2230,6 +2230,10 @@ ifdef FSMONITOR_OS_SETTINGS
|
||||||
COMPAT_OBJS += compat/fsmonitor/fsm-path-utils-$(FSMONITOR_OS_SETTINGS).o
|
COMPAT_OBJS += compat/fsmonitor/fsm-path-utils-$(FSMONITOR_OS_SETTINGS).o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifdef WITH_BREAKING_CHANGES
|
||||||
|
BASIC_CFLAGS += -DWITH_BREAKING_CHANGES
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(TCLTK_PATH),)
|
ifeq ($(TCLTK_PATH),)
|
||||||
NO_TCLTK = NoThanks
|
NO_TCLTK = NoThanks
|
||||||
endif
|
endif
|
||||||
|
@ -3187,6 +3191,7 @@ GIT-BUILD-OPTIONS: FORCE
|
||||||
-e "s|@USE_GETTEXT_SCHEME@|\'$(USE_GETTEXT_SCHEME)\'|" \
|
-e "s|@USE_GETTEXT_SCHEME@|\'$(USE_GETTEXT_SCHEME)\'|" \
|
||||||
-e "s|@LOCALEDIR@|\'$(localedir_SQ)\'|" \
|
-e "s|@LOCALEDIR@|\'$(localedir_SQ)\'|" \
|
||||||
-e "s!@BROKEN_PATH_FIX@!\'$(BROKEN_PATH_FIX)\'!" \
|
-e "s!@BROKEN_PATH_FIX@!\'$(BROKEN_PATH_FIX)\'!" \
|
||||||
|
-e "s|@WITH_BREAKING_CHANGES@|\'$(WITH_BREAKING_CHANGES)\'|" \
|
||||||
GIT-BUILD-OPTIONS.in >$@+
|
GIT-BUILD-OPTIONS.in >$@+
|
||||||
@if grep -q '^[A-Z][A-Z_]*=@.*@$$' $@+; then echo "Unsubstituted build options in $@" >&2 && exit 1; fi
|
@if grep -q '^[A-Z][A-Z_]*=@.*@$$' $@+; then echo "Unsubstituted build options in $@" >&2 && exit 1; fi
|
||||||
@if cmp $@+ $@ >/dev/null 2>&1; then $(RM) $@+; else mv $@+ $@; fi
|
@if cmp $@+ $@ >/dev/null 2>&1; then $(RM) $@+; else mv $@+ $@; fi
|
||||||
|
|
|
@ -1198,6 +1198,7 @@ string(REPLACE "@GITWEBDIR@" "'${GITWEBDIR}'" git_build_options "${git_build_opt
|
||||||
string(REPLACE "@USE_GETTEXT_SCHEME@" "" git_build_options "${git_build_options}")
|
string(REPLACE "@USE_GETTEXT_SCHEME@" "" git_build_options "${git_build_options}")
|
||||||
string(REPLACE "@LOCALEDIR@" "'${LOCALEDIR}'" git_build_options "${git_build_options}")
|
string(REPLACE "@LOCALEDIR@" "'${LOCALEDIR}'" git_build_options "${git_build_options}")
|
||||||
string(REPLACE "@BROKEN_PATH_FIX@" "" git_build_options "${git_build_options}")
|
string(REPLACE "@BROKEN_PATH_FIX@" "" git_build_options "${git_build_options}")
|
||||||
|
string(REPLACE "@WITH_BREAKING_CHANGES@" "" git_build_options "${git_build_options}")
|
||||||
if(USE_VCPKG)
|
if(USE_VCPKG)
|
||||||
string(APPEND git_build_options "PATH=\"$PATH:$TEST_DIRECTORY/../compat/vcbuild/vcpkg/installed/x64-windows/bin\"\n")
|
string(APPEND git_build_options "PATH=\"$PATH:$TEST_DIRECTORY/../compat/vcbuild/vcpkg/installed/x64-windows/bin\"\n")
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -644,6 +644,12 @@ build_options_config.set('GIT_TEST_UTF8_LOCALE', '')
|
||||||
build_options_config.set_quoted('LOCALEDIR', fs.as_posix(get_option('prefix') / get_option('localedir')))
|
build_options_config.set_quoted('LOCALEDIR', fs.as_posix(get_option('prefix') / get_option('localedir')))
|
||||||
build_options_config.set('GITWEBDIR', fs.as_posix(get_option('prefix') / get_option('datadir') / 'gitweb'))
|
build_options_config.set('GITWEBDIR', fs.as_posix(get_option('prefix') / get_option('datadir') / 'gitweb'))
|
||||||
|
|
||||||
|
if get_option('breaking_changes')
|
||||||
|
build_options_config.set('WITH_BREAKING_CHANGES', 'YesPlease')
|
||||||
|
else
|
||||||
|
build_options_config.set('WITH_BREAKING_CHANGES', '')
|
||||||
|
endif
|
||||||
|
|
||||||
if get_option('sane_tool_path') != ''
|
if get_option('sane_tool_path') != ''
|
||||||
build_options_config.set_quoted('BROKEN_PATH_FIX', 's|^\# @BROKEN_PATH_FIX@$|git_broken_path_fix "' + get_option('sane_tool_path') + '"|')
|
build_options_config.set_quoted('BROKEN_PATH_FIX', 's|^\# @BROKEN_PATH_FIX@$|git_broken_path_fix "' + get_option('sane_tool_path') + '"|')
|
||||||
else
|
else
|
||||||
|
|
|
@ -43,6 +43,8 @@ option('sha256_backend', type: 'combo', choices: ['openssl', 'nettle', 'gcrypt',
|
||||||
description: 'The backend used for hashing objects with the SHA256 object format')
|
description: 'The backend used for hashing objects with the SHA256 object format')
|
||||||
|
|
||||||
# Build tweaks.
|
# Build tweaks.
|
||||||
|
option('breaking_changes', type: 'boolean', value: false,
|
||||||
|
description: 'Enable upcoming breaking changes.')
|
||||||
option('macos_use_homebrew_gettext', type: 'boolean', value: true,
|
option('macos_use_homebrew_gettext', type: 'boolean', value: true,
|
||||||
description: 'Use gettext from Homebrew instead of the slightly-broken system-provided one.')
|
description: 'Use gettext from Homebrew instead of the slightly-broken system-provided one.')
|
||||||
|
|
||||||
|
|
|
@ -1864,6 +1864,10 @@ test_lazy_prereq CURL '
|
||||||
curl --version
|
curl --version
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_lazy_prereq WITHOUT_BREAKING_CHANGES '
|
||||||
|
test -z "$WITH_BREAKING_CHANGES"
|
||||||
|
'
|
||||||
|
|
||||||
# SHA1 is a test if the hash algorithm in use is SHA-1. This is both for tests
|
# SHA1 is a test if the hash algorithm in use is SHA-1. This is both for tests
|
||||||
# which will not work with other hash algorithms and tests that work but don't
|
# which will not work with other hash algorithms and tests that work but don't
|
||||||
# test anything meaningful (e.g. special values which cause short collisions).
|
# test anything meaningful (e.g. special values which cause short collisions).
|
||||||
|
|
Loading…
Reference in New Issue