diff options
28 files changed, 140 insertions, 40 deletions
diff --git a/data/syntax-highlighting/vim/ftdetect/meson.vim b/data/syntax-highlighting/vim/ftdetect/meson.vim index 84db70c..3233c58 100644 --- a/data/syntax-highlighting/vim/ftdetect/meson.vim +++ b/data/syntax-highlighting/vim/ftdetect/meson.vim @@ -1,2 +1,3 @@ au BufNewFile,BufRead meson.build set filetype=meson au BufNewFile,BufRead meson_options.txt set filetype=meson +au BufNewFile,BufRead *.wrap set filetype=dosini diff --git a/docs/markdown/Reference-tables.md b/docs/markdown/Reference-tables.md index 61f4803..4fc28dc 100644 --- a/docs/markdown/Reference-tables.md +++ b/docs/markdown/Reference-tables.md @@ -78,6 +78,7 @@ set in the cross file. | riscv64 | 64 bit RISC-V Open ISA| | rl78 | Renesas RL78 | | rx | Renesas RX 32 bit MCU | +| s390 | IBM zSystem s390 | | s390x | IBM zSystem s390x | | sparc | 32 bit SPARC | | sparc64 | SPARC v9 processor | @@ -141,7 +142,7 @@ linker flags. It is recommended that you **do not use these**. They are provided purely to for backwards compatibility with other build systems. There are many caveats to their use, especially when rebuilding the project. It is **highly** recommended -that you use [the command line arguments](#language-arguments-parameters-names) +that you use [the command line arguments](#language-arguments-parameter-names) instead. | Name | Comment | diff --git a/docs/markdown/Users.md b/docs/markdown/Users.md index 7290a5b..f271397 100644 --- a/docs/markdown/Users.md +++ b/docs/markdown/Users.md @@ -31,7 +31,7 @@ listed in the [`meson` GitHub topic](https://github.com/topics/meson). - [fwupd](https://github.com/hughsie/fwupd), a simple daemon to allow session software to update firmware - [GameMode](https://github.com/FeralInteractive/gamemode), a daemon/lib combo for Linux that allows games to request a set of optimisations be temporarily applied to the host OS - [Geary](https://wiki.gnome.org/Apps/Geary), an email application built around conversations, for the GNOME 3 desktop. - - [GLib](https://gitlab.gnome.org/GNOME/glib), cross-platform C library used by GTK+ and GStreamer (not the default yet) + - [GLib](https://gitlab.gnome.org/GNOME/glib), cross-platform C library used by GTK+ and GStreamer - [GNOME Boxes](https://gitlab.gnome.org/GNOME/gnome-boxes), a GNOME hypervisor - [GNOME Builder](https://gitlab.gnome.org/GNOME/gnome-builder), an IDE for the GNOME platform - [GNOME MPV](https://github.com/gnome-mpv/gnome-mpv), GNOME frontend to the mpv video player @@ -42,7 +42,7 @@ listed in the [`meson` GitHub topic](https://github.com/topics/meson). - [GNU FriBidi](https://github.com/fribidi/fribidi), the open source implementation of the Unicode Bidirectional Algorithm - [Graphene](https://ebassi.github.io/graphene/), a thin type library for graphics - [Grilo](https://git.gnome.org/browse/grilo) and [Grilo plugins](https://git.gnome.org/browse/grilo-plugins), the Grilo multimedia framework - - [GStreamer](https://cgit.freedesktop.org/gstreamer/gstreamer/), multimedia framework (not the default yet) + - [GStreamer](https://cgit.freedesktop.org/gstreamer/gstreamer/), multimedia framework - [GTK+](https://gitlab.gnome.org/GNOME/gtk), the multi-platform toolkit used by GNOME - [GtkDApp](https://gitlab.com/csoriano/GtkDApp), an application template for developing Flatpak apps with Gtk+ and D - [GVfs](https://git.gnome.org/browse/gvfs/), a userspace virtual filesystem designed to work with the I/O abstraction of GIO @@ -84,11 +84,11 @@ format files - [oomd](https://github.com/facebookincubator/oomd), a userspace Out-Of-Memory (OOM) killer for Linux systems - [OpenH264](https://github.com/cisco/openh264), open source H.264 codec - [OpenHMD](https://github.com/OpenHMD/OpenHMD), a free and open source API and drivers for immersive technology, such as head mounted displays with built in head tracking - - [Orc](http://cgit.freedesktop.org/gstreamer/orc/), the Optimized Inner Loop Runtime Compiler (not the default yet) + - [Orc](http://cgit.freedesktop.org/gstreamer/orc/), the Optimized Inner Loop Runtime Compiler - [OTS](https://github.com/khaledhosny/ots), the OpenType Sanitizer, parses and serializes OpenType files (OTF, TTF) and WOFF and WOFF2 font files, validating and sanitizing them as it goes. Used by Chromium and Firefox - [Outlier](https://github.com/kerolasa/outlier), a small Hello World style meson example project - [Pacman](https://git.archlinux.org/pacman.git/tree/), a package manager for Arch Linux - - [Pango](https://git.gnome.org/browse/pango/), an Internationalized text layout and rendering library (not the default yet) + - [Pango](https://git.gnome.org/browse/pango/), an Internationalized text layout and rendering library - [Parzip](https://github.com/jpakkane/parzip), a multithreaded reimplementation of Zip - [Peek](https://github.com/phw/peek), simple animated GIF screen recorder with an easy to use interface - [PicoLibc](https://github.com/keith-packard/picolibc), a standard C library for small embedded systems with limited RAM @@ -97,6 +97,7 @@ format files - [Pitivi](https://github.com/pitivi/pitivi/), a nonlinear video editor - [Playerctl](https://github.com/acrisci/playerctl), mpris command-line controller and library for spotify, vlc, audacious, bmp, cmus, and others - [Polari](https://gitlab.gnome.org/GNOME/polari), an IRC client + - [qboot](https://github.com/bonzini/qboot), a minimal x86 firmware for booting Linux kernels - [radare2](https://github.com/radare/radare2), unix-like reverse engineering framework and commandline tools (not the default) - [RxDock](https://gitlab.com/rxdock/rxdock), a protein-ligand docking software designed for high throughput virtual screening (fork of rDock) - [SSHFS](https://github.com/libfuse/sshfs), allows you to mount a remote filesystem using SFTP @@ -108,13 +109,14 @@ format files - [Terminology](https://github.com/billiob/terminology), a terminal emulator based on the Enlightenment Foundation Libraries - [Tilix](https://github.com/gnunn1/tilix), a tiling terminal emulator for Linux using GTK+ 3 - [Valum](https://github.com/valum-framework/valum), a micro web framework written in Vala - - [Wayland and Weston](https://lists.freedesktop.org/archives/wayland-devel/2016-November/031984.html), a next generation display server (not merged yet) + - [Wayland](https://github.com/wayland-project/wayland) and [Weston](https://github.com/wayland-project/weston), a next generation display server - [wlroots](https://github.com/swaywm/wlroots), a modular Wayland compositor library - [wxFormBuilder](https://github.com/wxFormBuilder/wxFormBuilder), RAD tool for wxWidgets GUI design - [xi-gtk](https://github.com/eyelash/xi-gtk), a GTK+ front-end for the Xi editor - [Xorg](https://cgit.freedesktop.org/xorg/xserver/), the X.org display server (not the default yet) - [zathura](https://github.com/pwmt/zathura), a highly customizable and functional document viewer based on the girara user interface library and several document libraries + - [Zrythm](https://git.zrythm.org/cgit/zrythm), a cross-platform digital audio workstation using GTK+ 3 - [ZStandard](https://github.com/facebook/zstd/commit/4dca56ed832c6a88108a2484a8f8ff63d8d76d91), a compression algorithm developed at Facebook (not used by default) Note that a more up-to-date list of GNOME projects that use Meson can be found [here](https://wiki.gnome.org/Initiatives/GnomeGoals/MesonPorting). diff --git a/mesonbuild/dependencies/__init__.py b/mesonbuild/dependencies/__init__.py index 889a610..cc8817d 100644 --- a/mesonbuild/dependencies/__init__.py +++ b/mesonbuild/dependencies/__init__.py @@ -23,7 +23,8 @@ from .dev import GMockDependency, GTestDependency, LLVMDependency, ValgrindDepen from .coarrays import CoarrayDependency from .mpi import MPIDependency from .scalapack import ScalapackDependency -from .misc import (BlocksDependency, NetCDFDependency, OpenMPDependency, Python3Dependency, ThreadDependency, PcapDependency, CupsDependency, LibWmfDependency, LibGCryptDependency, GpgmeDependency, ShadercDependency) +from .misc import (BlocksDependency, CursesDependency, NetCDFDependency, OpenMPDependency, Python3Dependency, ThreadDependency, + PcapDependency, CupsDependency, LibWmfDependency, LibGCryptDependency, GpgmeDependency, ShadercDependency) from .platform import AppleFrameworks from .ui import GLDependency, GnuStepDependency, Qt4Dependency, Qt5Dependency, SDL2Dependency, WxDependency, VulkanDependency @@ -46,6 +47,7 @@ packages.update({ # From misc: 'blocks': BlocksDependency, + 'curses': CursesDependency, 'netcdf': NetCDFDependency, 'openmp': OpenMPDependency, 'python3': Python3Dependency, diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py index d7fa532..d2d115e 100644 --- a/mesonbuild/dependencies/base.py +++ b/mesonbuild/dependencies/base.py @@ -1817,10 +1817,13 @@ class ExternalProgram: @staticmethod @functools.lru_cache(maxsize=None) def _windows_sanitize_path(path: str) -> str: + # Ensure that we use USERPROFILE even when inside MSYS, MSYS2, Cygwin, etc. + if 'USERPROFILE' not in os.environ: + return path # Ignore executables in the WindowsApps directory which are # zero-sized wrappers that magically open the Windows Store to # install the application. - appstore_dir = Path.home() / 'AppData' / 'Local' / 'Microsoft' / 'WindowsApps' + appstore_dir = Path(os.environ['USERPROFILE']) / 'AppData' / 'Local' / 'Microsoft' / 'WindowsApps' paths = [] for each in path.split(os.pathsep): if Path(each) != appstore_dir: diff --git a/mesonbuild/dependencies/misc.py b/mesonbuild/dependencies/misc.py index 88f64e0..9077222 100644 --- a/mesonbuild/dependencies/misc.py +++ b/mesonbuild/dependencies/misc.py @@ -557,3 +557,26 @@ class ShadercDependency(ExternalDependency): @staticmethod def get_methods(): return [DependencyMethods.SYSTEM, DependencyMethods.PKGCONFIG] + +class CursesDependency(ExternalDependency): + def __init__(self, environment, kwargs): + super().__init__('curses', environment, None, kwargs) + self.name = 'curses' + self.is_found = False + methods = listify(self.methods) + + if set([DependencyMethods.AUTO, DependencyMethods.PKGCONFIG]).intersection(methods): + pkgconfig_files = ['ncurses', 'ncursesw'] + for pkg in pkgconfig_files: + pkgdep = PkgConfigDependency(pkg, environment, kwargs) + if pkgdep.found(): + self.compile_args = pkgdep.get_compile_args() + self.link_args = pkgdep.get_link_args() + self.version = pkgdep.get_version() + self.is_found = True + self.pcdep = pkgdep + return + + @staticmethod + def get_methods(): + return [DependencyMethods.AUTO, DependencyMethods.PKGCONFIG] diff --git a/mesonbuild/envconfig.py b/mesonbuild/envconfig.py index 98644c0..9b88b66 100644 --- a/mesonbuild/envconfig.py +++ b/mesonbuild/envconfig.py @@ -52,6 +52,7 @@ known_cpu_families = ( 'riscv64', 'rl78', 'rx', + 's390', 's390x', 'sparc', 'sparc64', @@ -70,6 +71,7 @@ CPU_FAMILES_64_BIT = [ 'mips64', 'ppc64', 'riscv64', + 's390x', 'sparc64', 'wasm64', 'x86_64', diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index 4dfb8b3..d936455 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -3328,7 +3328,7 @@ external dependencies (including libraries) must go to "dependencies".''') def dependency_fallback(self, display_name, kwargs): if self.coredata.get_builtin_option('wrap_mode') == WrapMode.nofallback: mlog.log('Not looking for a fallback subproject for the dependency', - mlog.bold(display_name), 'because:\nUse of fallback' + mlog.bold(display_name), 'because:\nUse of fallback ' 'dependencies is disabled.') return self.notfound_dependency() elif self.coredata.get_builtin_option('wrap_mode') == WrapMode.forcefallback: diff --git a/mesonbuild/wrap/wrap.py b/mesonbuild/wrap/wrap.py index abbeb9e..0ebc2bc 100644 --- a/mesonbuild/wrap/wrap.py +++ b/mesonbuild/wrap/wrap.py @@ -335,9 +335,7 @@ class Resolver: h = hashlib.sha256() tmpfile = tempfile.NamedTemporaryFile(mode='wb', dir=self.cachedir, delete=False) url = urllib.parse.urlparse(urlstring) - if not url.hostname: - raise WrapException('{} is not a valid URL'.format(urlstring)) - if url.hostname.endswith(whitelist_subdomain): + if url.hostname and url.hostname.endswith(whitelist_subdomain): resp = open_wrapdburl(urlstring) elif whitelist_subdomain in urlstring: raise WrapException('{} may be a WrapDB-impersonating URL'.format(urlstring)) diff --git a/run_tests.py b/run_tests.py index c811705..4a1d271 100755 --- a/run_tests.py +++ b/run_tests.py @@ -36,6 +36,26 @@ from mesonbuild.environment import Environment, detect_ninja from mesonbuild.coredata import backendlist NINJA_1_9_OR_NEWER = False +NINJA_CMD = None +# If we're on CI, just assume we have ninja in PATH and it's new enough because +# we provide that. This avoids having to detect ninja for every subprocess unit +# test that we run. +if 'CI' in os.environ: + NINJA_1_9_OR_NEWER = True + NINJA_CMD = 'ninja' +else: + # Look for 1.9 to see if https://github.com/ninja-build/ninja/issues/1219 + # is fixed, else require 1.6 for -w dupbuild=err + for v in ('1.9', '1.6'): + NINJA_CMD = detect_ninja(v) + if NINJA_CMD is not None: + if mesonlib.version_compare(v, '>=1.9'): + NINJA_1_9_OR_NEWER = True + else: + mlog.warning('Found ninja <1.9, tests will run slower', once=True) + break +if NINJA_CMD is None: + raise RuntimeError('Could not find Ninja v1.6 or newer') def guess_backend(backend, msbuild_exe: str): # Auto-detect backend if unspecified @@ -202,22 +222,8 @@ def get_backend_commands(backend, debug=False): clean_cmd = cmd + ['-alltargets', 'clean', '-UseNewBuildSystem=FALSE'] test_cmd = cmd + ['-target', 'RUN_TESTS'] elif backend is Backend.ninja: - global NINJA_1_9_OR_NEWER - # Look for 1.9 to see if https://github.com/ninja-build/ninja/issues/1219 - # is fixed, else require 1.6 for -w dupbuild=err - for v in ('1.9', '1.6'): - ninja_cmd = detect_ninja(v) - if ninja_cmd is not None: - if v == '1.9': - NINJA_1_9_OR_NEWER = True - else: - mlog.warning('Found ninja <1.9, tests will run slower', once=True) - if 'CI' in os.environ: - raise RuntimeError('Require ninja >= 1.9 when running on Meson CI') - break - cmd = [ninja_cmd, '-w', 'dupbuild=err', '-d', 'explain'] - if cmd[0] is None: - raise RuntimeError('Could not find Ninja v1.6 or newer') + global NINJA_CMD + cmd = [NINJA_CMD, '-w', 'dupbuild=err', '-d', 'explain'] if debug: cmd += ['-v'] clean_cmd = cmd + ['clean'] diff --git a/run_unittests.py b/run_unittests.py index 898f05e..b2b2557 100755 --- a/run_unittests.py +++ b/run_unittests.py @@ -32,6 +32,7 @@ import threading import urllib.error import urllib.request import zipfile +import hashlib from itertools import chain from unittest import mock from configparser import ConfigParser @@ -4542,6 +4543,14 @@ class WindowsTests(BasePlatformTests): self.assertTrue(prog.found(), msg='test-script-ext.py not found in PATH') self.assertPathEqual(prog.get_command()[0], python_command[0]) self.assertPathBasenameEqual(prog.get_path(), 'test-script-ext.py') + # Ensure that WindowsApps gets removed from PATH + path = os.environ['PATH'] + if 'WindowsApps' not in path: + username = os.environ['USERNAME'] + appstore_dir = r'C:\Users\{}\AppData\Local\Microsoft\WindowsApps'.format(username) + path = os.pathsep + appstore_dir + path = ExternalProgram._windows_sanitize_path(path) + self.assertNotIn('WindowsApps', path) def test_ignore_libs(self): ''' @@ -5910,6 +5919,39 @@ c = ['{0}'] def test_ld_environment_variable_fortran(self): self._check_ld('ld.gold', 'gold', 'fortran', 'GNU ld.gold') + def compute_sha256(self, filename): + with open(filename,"rb") as f: + return hashlib.sha256(f.read()).hexdigest(); + + def test_wrap_with_file_url(self): + testdir = os.path.join(self.unit_test_dir, '73 wrap file url') + source_filename = os.path.join(testdir, 'subprojects', 'foo.tar.xz') + patch_filename = os.path.join(testdir, 'subprojects', 'foo-patch.tar.xz') + wrap_filename = os.path.join(testdir, 'subprojects', 'foo.wrap') + source_hash = self.compute_sha256(source_filename) + patch_hash = self.compute_sha256(patch_filename) + wrap = textwrap.dedent("""\ + [wrap-file] + directory = foo + + source_url = file://{} + source_filename = foo.tar.xz + source_hash = {} + + patch_url = file://{} + patch_filename = foo-patch.tar.xz + patch_hash = {} + """.format(source_filename, source_hash, patch_filename, patch_hash)) + with open(wrap_filename, 'w') as f: + f.write(wrap) + self.init(testdir) + self.build() + self.run_tests() + + windows_proof_rmtree(os.path.join(testdir, 'subprojects', 'packagecache')) + windows_proof_rmtree(os.path.join(testdir, 'subprojects', 'foo')) + os.unlink(wrap_filename) + def should_run_cross_arm_tests(): return shutil.which('arm-linux-gnueabihf-gcc') and not platform.machine().lower().startswith('arm') diff --git a/test cases/common/52 custom target/depfile/dep.py b/test cases/common/52 custom target/depfile/dep.py index 476e88b..dc6e6b6 100755 --- a/test cases/common/52 custom target/depfile/dep.py +++ b/test cases/common/52 custom target/depfile/dep.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 import sys, os from glob import glob diff --git a/test cases/common/53 custom target chain/my_compiler.py b/test cases/common/53 custom target chain/my_compiler.py index 9cf4425..d99029b 100755 --- a/test cases/common/53 custom target chain/my_compiler.py +++ b/test cases/common/53 custom target chain/my_compiler.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 import sys diff --git a/test cases/common/53 custom target chain/my_compiler2.py b/test cases/common/53 custom target chain/my_compiler2.py index 0191f3f..22ec789 100755 --- a/test cases/common/53 custom target chain/my_compiler2.py +++ b/test cases/common/53 custom target chain/my_compiler2.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 import sys diff --git a/test cases/common/53 custom target chain/usetarget/subcomp.py b/test cases/common/53 custom target chain/usetarget/subcomp.py index b5f6eb0..52dc0bb 100755 --- a/test cases/common/53 custom target chain/usetarget/subcomp.py +++ b/test cases/common/53 custom target chain/usetarget/subcomp.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 import sys diff --git a/test cases/common/99 manygen/subdir/manygen.py b/test cases/common/99 manygen/subdir/manygen.py index d46b2a8..32ea63c 100755 --- a/test cases/common/99 manygen/subdir/manygen.py +++ b/test cases/common/99 manygen/subdir/manygen.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 from __future__ import print_function diff --git a/test cases/frameworks/31 curses/main.c b/test cases/frameworks/31 curses/main.c new file mode 100644 index 0000000..07d73f5 --- /dev/null +++ b/test cases/frameworks/31 curses/main.c @@ -0,0 +1,7 @@ +#include "curses.h" + +int main(void) { +initscr(); +endwin(); +return 0; +}
\ No newline at end of file diff --git a/test cases/frameworks/31 curses/meson.build b/test cases/frameworks/31 curses/meson.build new file mode 100644 index 0000000..21483fb --- /dev/null +++ b/test cases/frameworks/31 curses/meson.build @@ -0,0 +1,9 @@ +project('curses', 'c') + +curses = dependency('curses', required: false) +if not curses.found() + error('MESON_SKIP_TEST: Curses library not found') +endif + +exec = executable('basic', 'main.c', dependencies: curses) +# didn't run the test because in general graphics fail on CI diff --git a/test cases/linuxlike/14 static dynamic linkage/verify_static.py b/test cases/linuxlike/14 static dynamic linkage/verify_static.py index 66bf08b..594f194 100755 --- a/test cases/linuxlike/14 static dynamic linkage/verify_static.py +++ b/test cases/linuxlike/14 static dynamic linkage/verify_static.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 """Test script that checks if zlib was statically linked to executable""" import subprocess import sys diff --git a/test cases/unit/11 cross prog/some_cross_tool.py b/test cases/unit/11 cross prog/some_cross_tool.py index 1edd10f..4a473e2 100755 --- a/test cases/unit/11 cross prog/some_cross_tool.py +++ b/test cases/unit/11 cross prog/some_cross_tool.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 from __future__ import print_function diff --git a/test cases/unit/11 cross prog/sometool.py b/test cases/unit/11 cross prog/sometool.py index 4c0e3b1..2ac5680 100755 --- a/test cases/unit/11 cross prog/sometool.py +++ b/test cases/unit/11 cross prog/sometool.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 from __future__ import print_function diff --git a/test cases/unit/39 python extmodule/blaster.py b/test cases/unit/39 python extmodule/blaster.py index 163b6d4..8bfe9cf 100755 --- a/test cases/unit/39 python extmodule/blaster.py +++ b/test cases/unit/39 python extmodule/blaster.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 import sys import tachyon diff --git a/test cases/unit/61 identity cross/build_wrapper.py b/test cases/unit/61 identity cross/build_wrapper.py index 22e8b5d..b5fe7bb 100755 --- a/test cases/unit/61 identity cross/build_wrapper.py +++ b/test cases/unit/61 identity cross/build_wrapper.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 import subprocess, sys diff --git a/test cases/unit/61 identity cross/host_wrapper.py b/test cases/unit/61 identity cross/host_wrapper.py index 5b4eed8..e88577c 100755 --- a/test cases/unit/61 identity cross/host_wrapper.py +++ b/test cases/unit/61 identity cross/host_wrapper.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 import subprocess, sys diff --git a/test cases/unit/73 wrap file url/meson.build b/test cases/unit/73 wrap file url/meson.build new file mode 100644 index 0000000..3bd3b25 --- /dev/null +++ b/test cases/unit/73 wrap file url/meson.build @@ -0,0 +1,4 @@ +project('test wrap with file url') + +exe = subproject('foo').get_variable('foo_exe') +test('test1', exe) diff --git a/test cases/unit/73 wrap file url/subprojects/foo-patch.tar.xz b/test cases/unit/73 wrap file url/subprojects/foo-patch.tar.xz Binary files differnew file mode 100644 index 0000000..fdb026c --- /dev/null +++ b/test cases/unit/73 wrap file url/subprojects/foo-patch.tar.xz diff --git a/test cases/unit/73 wrap file url/subprojects/foo.tar.xz b/test cases/unit/73 wrap file url/subprojects/foo.tar.xz Binary files differnew file mode 100644 index 0000000..2ed6ab4 --- /dev/null +++ b/test cases/unit/73 wrap file url/subprojects/foo.tar.xz diff --git a/test cases/windows/8 find program/test-script b/test cases/windows/8 find program/test-script index d105a81..e764165 100644 --- a/test cases/windows/8 find program/test-script +++ b/test cases/windows/8 find program/test-script @@ -1,3 +1,3 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 print('1') |