diff --git a/pkgs/by-name/ga/gapless/package.nix b/pkgs/by-name/ga/gapless/package.nix index feacd598c9b0..1f42ef3e8916 100644 --- a/pkgs/by-name/ga/gapless/package.nix +++ b/pkgs/by-name/ga/gapless/package.nix @@ -15,14 +15,14 @@ }: stdenv.mkDerivation (finalAttrs: { pname = "gapless"; - version = "3.8.1"; + version = "4.0"; src = fetchFromGitLab { domain = "gitlab.gnome.org"; owner = "neithern"; repo = "g4music"; rev = "v${finalAttrs.version}"; - hash = "sha256-pABiz7AIfkuB2Z0ErZoHfIrgdllO83ucbUFNjZ9wc+o="; + hash = "sha256-t9YthW8HZz2kXYPvidVRy7GVB2cRGEOCrXZtIpW65MA="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/ni/nimdow/package.nix b/pkgs/by-name/ni/nimdow/package.nix index d35436b18481..f6b9d5bb9be5 100644 --- a/pkgs/by-name/ni/nimdow/package.nix +++ b/pkgs/by-name/ni/nimdow/package.nix @@ -3,13 +3,13 @@ buildNimPackage (finalAttrs: { pname = "nimdow"; - version = "0.7.38"; + version = "0.7.39"; src = fetchFromGitHub { owner = "avahe-kellenberger"; repo = "nimdow"; rev = "v${finalAttrs.version}"; - hash = "sha256-GPu3Z63rFBgCCV7bdBg9cJh5thv2xrv/nSMa5Q/zp48="; + hash = "sha256-9gYlVuKDHCs6yaY1b6dJgwQUJdko6npjom4ab7nKZ7w="; }; lockFile = ./lock.json; diff --git a/pkgs/by-name/sh/shadps4/package.nix b/pkgs/by-name/sh/shadps4/package.nix index 56a0b85b4256..9c751d267334 100644 --- a/pkgs/by-name/sh/shadps4/package.nix +++ b/pkgs/by-name/sh/shadps4/package.nix @@ -35,13 +35,13 @@ stdenv.mkDerivation { pname = "shadps4"; - version = "0.3.0-unstable-2024-10-13"; + version = "0.3.0-unstable-2024-10-14"; src = fetchFromGitHub { owner = "shadps4-emu"; repo = "shadPS4"; - rev = "bd9f82df94847b4a5f3d2676ae938f064505c992"; - hash = "sha256-Z4+hHq2VI4wA1D72dBI7Lt++Rm3q0svjF6AialXxM0k="; + rev = "09725bd921088b73746605e672abf6ff40171880"; + hash = "sha256-NtIiqmiZ1iCciMjT1cL7ONWxNHRO/0bci/thLrcORjo="; fetchSubmodules = true; }; diff --git a/pkgs/applications/audio/soundwireserver/default.nix b/pkgs/by-name/so/soundwireserver/package.nix similarity index 92% rename from pkgs/applications/audio/soundwireserver/default.nix rename to pkgs/by-name/so/soundwireserver/package.nix index b296ebdad602..1d04e48129d5 100644 --- a/pkgs/applications/audio/soundwireserver/default.nix +++ b/pkgs/by-name/so/soundwireserver/package.nix @@ -1,9 +1,9 @@ -{ lib -, qt5 -, autoPatchelfHook -, unzip -, fetchzip -, portaudio +{ + lib, + qt5, + autoPatchelfHook, + fetchzip, + portaudio, }: qt5.mkDerivation { @@ -16,7 +16,6 @@ qt5.mkDerivation { }; nativeBuildInputs = [ - unzip autoPatchelfHook ]; diff --git a/pkgs/development/interpreters/perl/interpreter.nix b/pkgs/development/interpreters/perl/interpreter.nix index f04b352388ec..b10ba2b1f283 100644 --- a/pkgs/development/interpreters/perl/interpreter.nix +++ b/pkgs/development/interpreters/perl/interpreter.nix @@ -106,12 +106,11 @@ stdenv.mkDerivation (rec { "-Dman1dir=${placeholder "out"}/share/man/man1" "-Dman3dir=${placeholder "out"}/share/man/man3" ] ++ - (if stdenv.hostPlatform.isStatic + (if (stdenv.cc.targetPrefix != "") then [ "-Dcc=${stdenv.cc.targetPrefix}cc" "-Dnm=${stdenv.cc.targetPrefix}nm" "-Dar=${stdenv.cc.targetPrefix}ar" - "-Uusedl" ] else [ "-Dcc=cc" @@ -123,6 +122,7 @@ stdenv.mkDerivation (rec { "-Dlocincpth=${libcInc}/include" "-Dloclibpth=${libcLib}/lib" ] + ++ lib.optional stdenv.hostPlatform.isStatic "-Uusedl" ++ lib.optionals ((builtins.match ''5\.[0-9]*[13579]\..+'' version) != null) [ "-Dusedevel" "-Uversiononly" ] ++ lib.optional stdenv.hostPlatform.isSunOS "-Dcc=gcc" ++ lib.optional enableThreading "-Dusethreads" @@ -135,7 +135,8 @@ stdenv.mkDerivation (rec { configureScript = lib.optionalString (!crossCompiling) "${stdenv.shell} ./Configure"; - postConfigure = lib.optionalString stdenv.hostPlatform.isStatic '' + # !canExecute cross uses miniperl which doesn't have this + postConfigure = lib.optionalString (!crossCompiling && stdenv.cc.targetPrefix != "") '' substituteInPlace Makefile \ --replace-fail "AR = ar" "AR = ${stdenv.cc.targetPrefix}ar" ''; diff --git a/pkgs/development/python-modules/dukpy/default.nix b/pkgs/development/python-modules/dukpy/default.nix index 453d68e8534e..7b684658d0f7 100644 --- a/pkgs/development/python-modules/dukpy/default.nix +++ b/pkgs/development/python-modules/dukpy/default.nix @@ -21,6 +21,12 @@ buildPythonPackage rec { hash = "sha256-8RDMz9SfBoUe7LQ9/atsZlJ/2uwLUb0hZxeYdsUOGpU="; }; + postPatch = '' + substituteInPlace tests/test_webassets_filter.py \ + --replace-fail "class PyTestTemp" "class _Temp" \ + --replace-fail "PyTestTemp" "Temp" + ''; + build-system = [ setuptools ]; dependencies = [ mutf8 ]; diff --git a/pkgs/development/python-modules/flask-assets/default.nix b/pkgs/development/python-modules/flask-assets/default.nix index 46e225783493..6618e130067d 100644 --- a/pkgs/development/python-modules/flask-assets/default.nix +++ b/pkgs/development/python-modules/flask-assets/default.nix @@ -1,7 +1,8 @@ { lib, buildPythonPackage, - fetchPypi, + fetchFromGitHub, + fetchpatch2, setuptools, flask, webassets, @@ -13,35 +14,37 @@ buildPythonPackage rec { version = "2.1.0"; pyproject = true; - src = fetchPypi { - pname = "Flask-Assets"; - inherit version; - hash = "sha256-+E1lMv/lnJ/zUoheh0D/TaJcC8+s2AXwqAaBXkQ1SBM="; + src = fetchFromGitHub { + owner = "miracle2k"; + repo = "flask-assets"; + rev = "refs/tags/${version}"; + hash = "sha256-R6cFTT+r/i5j5/QQ+cCFmeuO7SNTiV1F+e0JTxwIUGY="; }; - patchPhase = '' - substituteInPlace tests/test_integration.py --replace 'static_path=' 'static_url_path=' - substituteInPlace tests/test_integration.py --replace "static_folder = '/'" "static_folder = '/x'" - substituteInPlace tests/test_integration.py --replace "'/foo'" "'/x/foo'" - ''; + patches = [ + # On master branch but not in a release. + (fetchpatch2 { + name = "refactor-with-pytest.patch"; + url = "https://github.com/miracle2k/flask-assets/commit/56e06dbb160c165e0289ac97496354786fe3f3fd.patch?full_index=1"; + hash = "sha256-Feo7gHHmHtWRB+3XvlECdU4i5rpyjyKEYEUCuy24rf4="; + }) + ]; - nativeBuildInputs = [ setuptools ]; + build-system = [ setuptools ]; - propagatedBuildInputs = [ + dependencies = [ flask webassets ]; - doCheck = false; # tests are broken with webassets 2.0 - nativeCheckInputs = [ pytestCheckHook ]; pythonImportsCheck = [ "flask_assets" ]; - meta = with lib; { + meta = { homepage = "https://github.com/miracle2k/flask-assets"; description = "Asset management for Flask, to compress and merge CSS and Javascript files"; - license = licenses.bsd2; - maintainers = with maintainers; [ abbradar ]; + license = lib.licenses.bsd2; + maintainers = with lib.maintainers; [ abbradar ]; }; } diff --git a/pkgs/development/python-modules/webassets/default.nix b/pkgs/development/python-modules/webassets/default.nix index 64b45c17154c..d64ca27ece01 100644 --- a/pkgs/development/python-modules/webassets/default.nix +++ b/pkgs/development/python-modules/webassets/default.nix @@ -2,40 +2,72 @@ lib, buildPythonPackage, fetchPypi, + setuptools, pyyaml, - nose, jinja2, mock, - pytest, + fetchpatch2, + pytestCheckHook, + distutils, }: buildPythonPackage rec { pname = "webassets"; version = "2.0"; - format = "setuptools"; + pyproject = true; src = fetchPypi { inherit pname version; - sha256 = "1kc1042jydgk54xpgcp0r1ib4gys91nhy285jzfcxj3pfqrk4w8n"; + hash = "sha256-FnEyM3Z3yM7clwUJD21I2j+yYsjgsnc7KfM1LwUBgc0="; }; - propagatedBuildInputs = [ pyyaml ]; - nativeCheckInputs = [ - nose - jinja2 - mock - pytest + patches = [ + # remove nose and extra mock + (fetchpatch2 { + name = "remove-nose-and-mock.patch"; + url = "https://github.com/miracle2k/webassets/commit/26e203929eebbb4cdbb9967cf47fefa95df8f24d.patch?full_index=1"; + hash = "sha256-+jrMT6Sl/MOLkleUEDZkzRd5tzBTXZYNoCXRrTFVtq4="; + excludes = [ + "requirements-dev.pip" + "tox.ini" + ]; + }) + (fetchpatch2 { + name = "fix-missing-zope-skip.patch"; + url = "https://github.com/miracle2k/webassets/commit/3bfb5ea8223c46c60b922fdbbda36d9b8c5e9c9c.patch?full_index=1"; + hash = "sha256-dV8bp6vYr56mZpzw5C7ac4rXri04o4MrAhwfWUXLe4s="; + }) + ./migrate_test_setup_to_pytest.patch ]; - # Needs Babel CLI tool - doCheck = false; - checkPhase = "py.test"; + build-system = [ setuptools ]; - meta = with lib; { + dependencies = [ pyyaml ]; + + nativeCheckInputs = [ + jinja2 + mock + pytestCheckHook + distutils + ]; + + postPatch = '' + # Fix thread attribute "isAlive" + substituteInPlace tests/test_script.py \ + --replace-fail "isAlive" "is_alive" + ''; + + disabledTests = [ + "TestFilterBaseClass" + "TestAutoprefixer6Filter" + "TestBabel" + ]; + + meta = { description = "Media asset management for Python, with glue code for various web frameworks"; mainProgram = "webassets"; homepage = "https://github.com/miracle2k/webassets/"; - license = licenses.bsd2; - maintainers = with maintainers; [ abbradar ]; + license = lib.licenses.bsd2; + maintainers = with lib.maintainers; [ abbradar ]; }; } diff --git a/pkgs/development/python-modules/webassets/migrate_test_setup_to_pytest.patch b/pkgs/development/python-modules/webassets/migrate_test_setup_to_pytest.patch new file mode 100644 index 000000000000..134ba1df203b --- /dev/null +++ b/pkgs/development/python-modules/webassets/migrate_test_setup_to_pytest.patch @@ -0,0 +1,591 @@ +diff --git a/src/webassets/test.py b/src/webassets/test.py +index 232806c..a362120 100644 +--- a/src/webassets/test.py ++++ b/src/webassets/test.py +@@ -27,7 +27,7 @@ class TempDirHelper(object): + + default_files = {} + +- def setup(self): ++ def setup_method(self): + self._tempdir_created = tempfile.mkdtemp() + self.create_files(self.default_files) + +@@ -35,7 +35,7 @@ class TempDirHelper(object): + shutil.rmtree(self._tempdir_created) + + def __enter__(self): +- self.setup() ++ self.setup_method() + return self + + def __exit__(self, type, value, traceback): +@@ -136,8 +136,8 @@ class TempEnvironmentHelper(TempDirHelper): + + default_files = {'in1': 'A', 'in2': 'B', 'in3': 'C', 'in4': 'D'} + +- def setup(self): +- TempDirHelper.setup(self) ++ def setup_method(self): ++ TempDirHelper.setup_method(self) + + self.env = self._create_environment() + # Unless we explicitly test it, we don't want to use the cache +diff --git a/tests/__init__.py b/tests/__init__.py +index 7d859d3..363b641 100644 +--- a/tests/__init__.py ++++ b/tests/__init__.py +@@ -1,4 +1,4 @@ +-def setup(): ++def setup_method(): + # For some strange reason (using Python 2.6.6), if a warning has + # already been raised somewhere else before a test attempts to + # capture and verify it using warnings.catch_warnings(), the warning +diff --git a/tests/test_bundle_build.py b/tests/test_bundle_build.py +index 9325bb9..86f69b9 100644 +--- a/tests/test_bundle_build.py ++++ b/tests/test_bundle_build.py +@@ -473,8 +473,8 @@ class TestAutoBuild(TempEnvironmentHelper): + generally everything involving the updater (as used by the build() method). + """ + +- def setup(self): +- TempEnvironmentHelper.setup(self) ++ def setup_method(self): ++ TempEnvironmentHelper.setup_method(self) + + class CustomUpdater(BaseUpdater): + allow = True +diff --git a/tests/test_bundle_urls.py b/tests/test_bundle_urls.py +index 317889e..9bd8753 100644 +--- a/tests/test_bundle_urls.py ++++ b/tests/test_bundle_urls.py +@@ -29,8 +29,8 @@ class BaseUrlsTester(TempEnvironmentHelper): + + default_files = {'a': '', 'b': '', 'c': '', '1': '', '2': ''} + +- def setup(self): +- TempEnvironmentHelper.setup(self) ++ def setup_method(self): ++ TempEnvironmentHelper.setup_method(self) + + self.env.url_expire = False + +@@ -282,8 +282,8 @@ class TestUrlsWithDebugTrue(BaseUrlsTester): + """Test url generation in debug mode. + """ + +- def setup(self): +- BaseUrlsTester.setup(self) ++ def setup_method(self): ++ BaseUrlsTester.setup_method(self) + self.env.debug = True + + def test_simple_bundle(self): +@@ -427,8 +427,8 @@ class TestUrlsWithDebugTrue(BaseUrlsTester): + + class TestUrlsWithDebugMerge(BaseUrlsTester): + +- def setup(self): +- BaseUrlsTester.setup(self) ++ def setup_method(self): ++ BaseUrlsTester.setup_method(self) + self.env.debug = 'merge' + + def test_simple_bundle(self): +diff --git a/tests/test_bundle_various.py b/tests/test_bundle_various.py +index b24a903..6d92eb3 100644 +--- a/tests/test_bundle_various.py ++++ b/tests/test_bundle_various.py +@@ -177,8 +177,8 @@ class TestVersionFeatures(TempEnvironmentHelper): + + default_files = {'in': 'foo'} + +- def setup(self): +- super(TestVersionFeatures, self).setup() ++ def setup_method(self): ++ super(TestVersionFeatures, self).setup_method() + self.env.manifest = DummyManifest() + self.env.versions = DummyVersion() + +@@ -371,8 +371,8 @@ class TestLoadPath(TempEnvironmentHelper): + an optional feature. + """ + +- def setup(self): +- TempEnvironmentHelper.setup(self) ++ def setup_method(self): ++ TempEnvironmentHelper.setup_method(self) + self.env.updater = False + self.env.directory = self.path('dir') + self.env.debug = True +@@ -603,8 +603,8 @@ class TestUrlContents(TempEnvironmentHelper): + """Test bundles containing a URL. + """ + +- def setup(self): +- TempEnvironmentHelper.setup(self) ++ def setup_method(self): ++ TempEnvironmentHelper.setup_method(self) + mock_opener = build_opener(MockHTTPHandler({ + 'http://foo': u'function() {}'})) + install_opener(mock_opener) +diff --git a/tests/test_cache.py b/tests/test_cache.py +index 9afbe3d..f8afb61 100644 +--- a/tests/test_cache.py ++++ b/tests/test_cache.py +@@ -89,8 +89,8 @@ class TestCacheIsUsed(TempEnvironmentHelper): + """Ensure the cache is used during the build process. + """ + +- def setup(self): +- TempEnvironmentHelper.setup(self) ++ def setup_method(self): ++ TempEnvironmentHelper.setup_method(self) + + class MyCache(BaseCache): + def __init__(self): +diff --git a/tests/test_environment.py b/tests/test_environment.py +index bd89ef6..ff36289 100644 +--- a/tests/test_environment.py ++++ b/tests/test_environment.py +@@ -13,7 +13,7 @@ from webassets import Bundle + class TestEnvApi(object): + """General Environment functionality.""" + +- def setup(self): ++ def setup_method(self): + self.m = Environment(None, None) + + def test_register_single_bundle(self): +@@ -186,7 +186,7 @@ class TestEnvConfig(object): + """Custom config values through get_config/set_config. + """ + +- def setup(self): ++ def setup_method(self): + self.m = Environment(None, None) + + def test_initial_values_override_defaults(self): +@@ -216,7 +216,7 @@ class TestSpecialProperties(object): + as a string, and would receive object instances when accessing the property. + """ + +- def setup(self): ++ def setup_method(self): + self.m = Environment('.', None) # we won't create any files + + def test_versioner(self): +diff --git a/tests/test_ext/test_jinja2.py b/tests/test_ext/test_jinja2.py +index 37139bb..155ad40 100644 +--- a/tests/test_ext/test_jinja2.py ++++ b/tests/test_ext/test_jinja2.py +@@ -12,7 +12,7 @@ from webassets.ext.jinja2 import AssetsExtension, Jinja2Loader + + class TestTemplateTag(object): + +- def setup(self): ++ def setup_method(self): + # Setup the assets environment. + assets_env = AssetsEnvironment('', '') + self.foo_bundle = Bundle() +@@ -123,8 +123,8 @@ class TestLoader(TempEnvironmentHelper): + """ + } + +- def setup(self): +- TempEnvironmentHelper.setup(self) ++ def setup_method(self): ++ TempEnvironmentHelper.setup_method(self) + self.jinja_env = JinjaEnvironment() + self.jinja_env.add_extension(AssetsExtension) + self.jinja_env.assets_environment = self.env +diff --git a/tests/test_filters.py b/tests/test_filters.py +index 9976f4e..deec66d 100644 +--- a/tests/test_filters.py ++++ b/tests/test_filters.py +@@ -79,7 +79,7 @@ class TestFilterBaseClass(object): + env = Environment(None, None) + env.config['attr1'] = 'bar' + env.config['attr4'] = 'bar' +- f = TestFilter(); f.ctx = ContextWrapper(env); f.setup() ++ f = TestFilter(); f.ctx = ContextWrapper(env); f.setup_method() + assert f.attr1 == 'bar' + assert f.attr4 is None # Was configured to not support env + +@@ -177,7 +177,7 @@ class TestExternalToolClass(object): + self.__class__.result = \ + argv, data.getvalue() if data is not None else data + +- def setup(self): ++ def setup_method(self): + if not hasattr(str, 'format'): + # A large part of this functionality is not available on Python 2.5 + pytest.skip() +@@ -630,12 +630,12 @@ class TestBuiltinFilters(TempEnvironmentHelper): + + class TestCSSPrefixer(TempEnvironmentHelper): + +- def setup(self): ++ def setup_method(self): + try: + import cssprefixer + except ImportError: + pytest.skip() +- TempEnvironmentHelper.setup(self) ++ TempEnvironmentHelper.setup_method(self) + + def test(self): + self.create_files({'in': """a { border-radius: 1em; }"""}) +@@ -650,10 +650,10 @@ class TestCSSPrefixer(TempEnvironmentHelper): + + class TestCoffeeScript(TempEnvironmentHelper): + +- def setup(self): ++ def setup_method(self): + if not find_executable('coffee'): + pytest.skip() +- TempEnvironmentHelper.setup(self) ++ TempEnvironmentHelper.setup_method(self) + + def test_default_options(self): + self.create_files({'in': "alert \"I knew it!\" if elvis?"}) +@@ -674,12 +674,12 @@ class TestCoffeeScript(TempEnvironmentHelper): + + class TestJinja2(TempEnvironmentHelper): + +- def setup(self): ++ def setup_method(self): + try: + import jinja2 + except ImportError: + pytest.skip() +- TempEnvironmentHelper.setup(self) ++ TempEnvironmentHelper.setup_method(self) + + def test_default_options(self): + self.create_files({'in': """Hi there, {{ name }}!"""}) +@@ -705,13 +705,13 @@ class TestClosure(TempEnvironmentHelper): + """ + } + +- def setup(self): ++ def setup_method(self): + try: + import closure + except ImportError: + pytest.skip() + +- TempEnvironmentHelper.setup(self) ++ TempEnvironmentHelper.setup_method(self) + + def test_closure(self): + self.mkbundle('foo.js', filters='closure_js', output='out.js').build() +@@ -832,10 +832,10 @@ class TestLess(TempEnvironmentHelper): + 'foo.less': "h1 { color: #FFFFFF; }", + } + +- def setup(self): ++ def setup_method(self): + if not find_executable('lessc'): + pytest.skip() +- TempEnvironmentHelper.setup(self) ++ TempEnvironmentHelper.setup_method(self) + + def test(self): + self.mkbundle('foo.less', filters='less', output='out.css').build() +@@ -928,14 +928,14 @@ class TestRubySass(TempEnvironmentHelper): + """, + } + +- def setup(self): ++ def setup_method(self): + if not find_executable('sass'): + pytest.skip() + + if "Ruby" not in check_output(["sass", "--version"]).decode('utf-8'): + pytest.skip() + +- TempEnvironmentHelper.setup(self) ++ TempEnvironmentHelper.setup_method(self) + + def test_sass(self): + sass = get_filter('sass_ruby', debug_info=False) +@@ -1038,10 +1038,10 @@ class TestSass(TempEnvironmentHelper): + """, + } + +- def setup(self): ++ def setup_method(self): + if not find_executable('sass'): + pytest.skip() +- TempEnvironmentHelper.setup(self) ++ TempEnvironmentHelper.setup_method(self) + + def test_sass(self): + sass = get_filter('sass') +@@ -1099,13 +1099,13 @@ class TestPyScss(TempEnvironmentHelper): + 'bar.scss': 'h1{color:red}' + } + +- def setup(self): ++ def setup_method(self): + try: + import scss + self.scss = scss + except ImportError: + pytest.skip() +- TempEnvironmentHelper.setup(self) ++ TempEnvironmentHelper.setup_method(self) + + def test(self): + self.mkbundle('foo.scss', filters='pyscss', output='out.css').build() +@@ -1136,13 +1136,13 @@ class TestLibSass(TempEnvironmentHelper): + 'b.scss': '$foo: foo !default; .test {background-color: $foo;}' + } + +- def setup(self): ++ def setup_method(self): + try: + import sass + self.sass = sass + except ImportError: + pytest.skip() +- TempEnvironmentHelper.setup(self) ++ TempEnvironmentHelper.setup_method(self) + + def test(self): + self.mkbundle('foo.scss', filters='libsass', output='out.css').build() +@@ -1198,10 +1198,10 @@ class TestCompass(TempEnvironmentHelper): + """ + } + +- def setup(self): ++ def setup_method(self): + if not find_executable('compass'): + pytest.skip() +- TempEnvironmentHelper.setup(self) ++ TempEnvironmentHelper.setup_method(self) + + def test_compass(self): + self.mkbundle('foo.sass', filters='compass', output='out.css').build() +@@ -1262,7 +1262,7 @@ class TestCompassConfig(object): + } + } + +- def setup(self): ++ def setup_method(self): + self.compass_config = CompassConfig(self.config).to_string() + + def test_compass_config_is_unicode(self): +@@ -1294,8 +1294,8 @@ class TestJST(TempEnvironmentHelper): + 'templates/bar.html': "