summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz@archlinux.org>2023-08-17 23:56:51 -0400
committerEli Schwartz <eschwartz@archlinux.org>2023-08-17 23:56:51 -0400
commit84c8905d527893bedc673e8a036b8b2ec89368b4 (patch)
treeffe8f20e45a5d6fdcc19927ae237c1bea2d769e0
parent1fd70a2a004900b7d97d9fc560e87d33266ecfed (diff)
downloadmeson-84c8905d527893bedc673e8a036b8b2ec89368b4.tar.gz
Revert "Add fs.relative_to()"
This reverts commit f52bcaa27fc125ab9ae583af466ba99c164169f3. It did not pass CI, and was merged anyway because there were two CI errors in the same cygwin job. The other error was not the fault of this commit, and since cygwin errors were glossed over because they were "expected", the presence of a new error *added* by this commit was overlooked. Per the meson development policy, PRs which result in CI errors can/should be reverted at will, no questions asked.
-rw-r--r--docs/markdown/Fs-module.md14
-rw-r--r--docs/markdown/snippets/fs_relative_to.md17
-rw-r--r--mesonbuild/modules/fs.py29
-rw-r--r--test cases/common/220 fs module/meson.build25
-rw-r--r--test cases/common/220 fs module/subdir/btgt.c5
-rw-r--r--test cases/common/220 fs module/subdir/meson.build34
6 files changed, 8 insertions, 116 deletions
diff --git a/docs/markdown/Fs-module.md b/docs/markdown/Fs-module.md
index f136bb904..cc67355b5 100644
--- a/docs/markdown/Fs-module.md
+++ b/docs/markdown/Fs-module.md
@@ -224,20 +224,6 @@ fs.stem('foo/bar/baz.dll.a') # baz.dll
project. If the file specified by `path` is a `files()` object it
cannot refer to a built file.
-### relative_to
-
-*Since 1.3.0*
-
-Return a relative filepath. In the event a relative path could not be found, the
-absolute path of `to` is returned. Relative path arguments will be assumed to be
-relative to `meson.current_source_dir()`.
-
-Has the following positional arguments:
- - to `str | file | custom_tgt | custom_idx | tgt`: end path
- - from `str | file | custom_tgt | custom_idx | tgt`: start path
-
-returns:
- - a string
### copyfile
diff --git a/docs/markdown/snippets/fs_relative_to.md b/docs/markdown/snippets/fs_relative_to.md
deleted file mode 100644
index 82e6a4268..000000000
--- a/docs/markdown/snippets/fs_relative_to.md
+++ /dev/null
@@ -1,17 +0,0 @@
-## `fs.relative_to()`
-
-The `fs` module now has a `relative_to` method. The method will return the
-relative path from argument one to argument two, if one exists. Otherwise, the
-absolute path to argument one is returned.
-
-```meson
-assert(fs.relative_to('c:\\prefix\\lib', 'c:\\prefix\\bin') == '..\\lib')
-assert(fs.relative_to('c:\\proj1\\foo', 'd:\\proj1\\bar') == 'c:\\proj1\\foo')
-assert(fs.relative_to('prefix\\lib\\foo', 'prefix') == 'lib\\foo')
-
-assert(fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')
-assert(fs.relative_to('prefix/lib/foo', 'prefix') == 'lib/foo')
-```
-
-In addition to strings, it can handle files, custom targets, custom target
-indices, and build targets.
diff --git a/mesonbuild/modules/fs.py b/mesonbuild/modules/fs.py
index 89aead06b..53174d231 100644
--- a/mesonbuild/modules/fs.py
+++ b/mesonbuild/modules/fs.py
@@ -20,16 +20,19 @@ import typing as T
from . import ExtensionModule, ModuleReturnValue, ModuleInfo
from .. import mlog
-from ..build import BuildTarget, CustomTarget, CustomTargetIndex, InvalidArguments
+from ..build import CustomTarget, InvalidArguments
from ..interpreter.type_checking import INSTALL_KW, INSTALL_MODE_KW, INSTALL_TAG_KW, NoneType
from ..interpreterbase import FeatureNew, KwargInfo, typed_kwargs, typed_pos_args, noKwargs
-from ..mesonlib import File, MesonException, has_path_sep, path_is_in_root, relpath
+from ..mesonlib import (
+ File,
+ MesonException,
+ has_path_sep,
+ path_is_in_root,
+)
if T.TYPE_CHECKING:
from . import ModuleState
- from ..build import BuildTargetTypes
from ..interpreter import Interpreter
- from ..interpreterbase import TYPE_kwargs
from ..mesonlib import FileOrString, FileMode
from typing_extensions import TypedDict
@@ -72,7 +75,6 @@ class FSModule(ExtensionModule):
'stem': self.stem,
'read': self.read,
'copyfile': self.copyfile,
- 'relative_to': self.relative_to,
})
def _absolute_dir(self, state: 'ModuleState', arg: 'FileOrString') -> Path:
@@ -310,23 +312,6 @@ class FSModule(ExtensionModule):
return ModuleReturnValue(ct, [ct])
- @FeatureNew('fs.relative_to', '1.3.0')
- @typed_pos_args('fs.relative_to', (str, File, CustomTarget, CustomTargetIndex, BuildTarget), (str, File, CustomTarget, CustomTargetIndex, BuildTarget))
- @noKwargs
- def relative_to(self, state: ModuleState, args: T.Tuple[T.Union[FileOrString, BuildTargetTypes], T.Union[FileOrString, BuildTargetTypes]], kwargs: TYPE_kwargs) -> str:
- def to_path(arg: T.Union[FileOrString, CustomTarget, CustomTargetIndex, BuildTarget]) -> str:
- if isinstance(arg, File):
- return arg.absolute_path(state.environment.source_dir, state.environment.build_dir)
- elif isinstance(arg, (CustomTarget, CustomTargetIndex, BuildTarget)):
- return state.backend.get_target_filename_abs(arg)
- else:
- return os.path.join(state.environment.source_dir, state.subdir, arg)
-
- t = to_path(args[0])
- f = to_path(args[1])
-
- return relpath(t, f)
-
def initialize(*args: T.Any, **kwargs: T.Any) -> FSModule:
return FSModule(*args, **kwargs)
diff --git a/test cases/common/220 fs module/meson.build b/test cases/common/220 fs module/meson.build
index 7f113d66e..b860fc8a3 100644
--- a/test cases/common/220 fs module/meson.build
+++ b/test cases/common/220 fs module/meson.build
@@ -1,4 +1,4 @@
-project('fs module test', 'c')
+project('fs module test')
is_windows = build_machine.system() == 'windows'
@@ -139,29 +139,6 @@ assert(fs.name('foo/bar/baz.dll.a') == 'baz.dll.a', 'failed to get basename with
assert(fs.stem('foo/bar/baz.dll') == 'baz', 'failed to get stem with suffix')
assert(fs.stem('foo/bar/baz.dll.a') == 'baz.dll', 'failed to get stem with compound suffix')
-# relative_to
-if build_machine.system() == 'windows'
- # strings
- assert(fs.relative_to('c:\\prefix\\lib\\foo', 'c:\\prefix') == 'lib\\foo')
- assert(fs.relative_to('c:\\prefix\\lib', 'c:\\prefix\\bin') == '..\\lib')
- assert(fs.relative_to('c:\\proj1\\foo', 'd:\\proj1\\bar') == 'c:\\proj1\\foo')
- assert(fs.relative_to('prefix\\lib\\foo', 'prefix') == 'lib\\foo')
- assert(fs.relative_to('prefix\\lib', 'prefix\\bin') == '..\\lib')
- assert(fs.relative_to('proj1\\foo', 'proj1\\bar') == '..\\foo')
- assert(fs.relative_to('subdir/subdirfile.txt', meson.current_source_dir()) == 'subdir\\subdirfile.txt')
- assert(fs.relative_to(files('meson.build'), files('subdir/meson.build')) == '..\\..\\meson.build')
- assert(fs.relative_to(files('meson.build'), 'subdir/meson.build') == '..\\..\\meson.build')
-else
- # strings
- assert(fs.relative_to('/prefix/lib/foo', '/prefix') == 'lib/foo')
- assert(fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')
- assert(fs.relative_to('prefix/lib/foo', 'prefix') == 'lib/foo')
- assert(fs.relative_to('prefix/lib', 'prefix/bin') == '../lib')
- assert(fs.relative_to('subdir/subdirfile.txt', meson.current_source_dir()) == 'subdir/subdirfile.txt')
- assert(fs.relative_to(files('meson.build'), files('subdir/meson.build')) == '../../meson.build')
- assert(fs.relative_to(files('meson.build'), 'subdir/meson.build') == '../../meson.build')
-endif
-
subdir('subdir')
subproject('subbie')
diff --git a/test cases/common/220 fs module/subdir/btgt.c b/test cases/common/220 fs module/subdir/btgt.c
deleted file mode 100644
index 8479e67d1..000000000
--- a/test cases/common/220 fs module/subdir/btgt.c
+++ /dev/null
@@ -1,5 +0,0 @@
-int
-main(void)
-{
- return 0;
-}
diff --git a/test cases/common/220 fs module/subdir/meson.build b/test cases/common/220 fs module/subdir/meson.build
index a0f3091fa..0cd2475e9 100644
--- a/test cases/common/220 fs module/subdir/meson.build
+++ b/test cases/common/220 fs module/subdir/meson.build
@@ -4,37 +4,3 @@ assert(fs.is_samepath(meson.project_source_root(), '..'), 'is_samepath not detec
assert(fs.is_samepath(meson.project_build_root(), meson.current_build_dir() / '..'), 'is_samepath not detecting same directory')
assert(fs.is_samepath(subdirfiles[0], 'subdirfile.txt'), 'is_samepath not detecting same directory when using File and str')
-
-# More relative_to to test subdir/builddir components
-
-build_to_src = fs.relative_to(meson.current_source_dir(), meson.current_build_dir())
-src_to_build = fs.relative_to(meson.current_build_dir(), meson.current_source_dir())
-
-btgt = executable('btgt', 'btgt.c')
-ctgt = fs.copyfile('subdirfile.txt')
-
-if build_machine.system() == 'windows'
- # Test that CustomTarget works
- assert(fs.relative_to('subdirfile.txt', ctgt) == '..\\@0@\\subdirfile.txt'.format(build_to_src))
- assert(fs.relative_to(ctgt, 'subdirfile.txt') == '..\\@0@\\subdirfile.txt'.format(src_to_build))
- # Test that CustomTargetIndex works
- assert(fs.relative_to('subdirfile.txt', ctgt[0]) == '..\\@0@\\subdirfile.txt'.format(build_to_src))
- assert(fs.relative_to(ctgt[0], 'subdirfile.txt') == '..\\@0@\\subdirfile.txt'.format(src_to_build))
- # Test that BuildTarget works
- assert(fs.relative_to('subdirfile.txt', btgt) == '..\\@0@\\subdirfile.txt'.format(build_to_src))
- assert(fs.relative_to(btgt, 'subdirfile.txt') == '..\\@0@\\btgt.exe'.format(src_to_build))
-else
- # Test that CustomTarget works
- assert(fs.relative_to('subdirfile.txt', ctgt) == '../@0@/subdirfile.txt'.format(build_to_src))
- assert(fs.relative_to(ctgt, 'subdirfile.txt') == '../@0@/subdirfile.txt'.format(src_to_build))
- # Test that CustomTargetIndex works
- assert(fs.relative_to('subdirfile.txt', ctgt[0]) == '../@0@/subdirfile.txt'.format(build_to_src))
- assert(fs.relative_to(ctgt[0], 'subdirfile.txt') == '../@0@/subdirfile.txt'.format(src_to_build))
- # Test that BuildTarget works
- assert(fs.relative_to('subdirfile.txt', btgt) == '../@0@/subdirfile.txt'.format(build_to_src))
- if host_machine.system() == 'windows'
- assert(fs.relative_to(btgt, 'subdirfile.txt') == '../@0@/btgt.exe'.format(src_to_build))
- else
- assert(fs.relative_to(btgt, 'subdirfile.txt') == '../@0@/btgt'.format(src_to_build))
- endif
-endif