ndev-stack 0.3.6__tar.gz → 0.3.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/PKG-INFO +1 -1
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/__init__.py +1 -1
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/chroot/packages.py +27 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/php/builder.py +9 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/php/installer.py +4 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev_stack.egg-info/PKG-INFO +1 -1
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/pyproject.toml +1 -1
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/tests/test_opensuse_compat.py +17 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/README.md +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/__main__.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/cli.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/common/__init__.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/common/config.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/common/constants.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/common/distro.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/common/github.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/common/logger.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/common/manifest.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/common/modules/__init__.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/common/modules/base.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/common/modules/builtin/mailpit/manifest.json +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/common/modules/builtin/mailpit/module.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/common/modules/builtin/mongodb/manifest.json +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/common/modules/builtin/mongodb/module.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/common/modules/builtin/postgres/manifest.json +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/common/modules/builtin/postgres/module.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/common/modules/builtin/redis/manifest.json +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/common/modules/builtin/redis/module.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/common/modules/manager.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/common/utils.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/__init__.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/chroot/manager.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/chroot/shell.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/cli.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/commands/available.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/commands/clean.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/commands/ctl.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/commands/current.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/commands/db.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/commands/doctor.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/commands/grok.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/commands/install.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/commands/list.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/commands/logs.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/commands/mailpit.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/commands/modules.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/commands/mongodb.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/commands/postgres.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/commands/reload.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/commands/restart.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/commands/setup.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/commands/start.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/commands/status.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/commands/stop.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/commands/uninstall.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/commands/update.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/commands/upgrade.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/commands/use.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/commands/vhost.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/php/downloader.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/php/extensions.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/php/resolver.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/php/templates.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/runtime/fpm.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/runtime/mailpit.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/runtime/nginx_helper.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/runtime/pma.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/runtime/process.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/runtime/services.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/runtime/sockets.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/runtime/upgrade.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/linux/tui.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/main.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/tui.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/win/__init__.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/win/bin/shim.exe +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/win/cli.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/win/commands/__init__.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/win/core/__init__.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/win/core/db.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/win/core/elevate.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/win/core/ext.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/win/core/fcgi.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/win/core/grok.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/win/core/logs.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/win/core/mailpit.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/win/core/mkcert.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/win/core/paths.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/win/core/php.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/win/core/pma.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/win/core/redis_core.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/win/core/services.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/win/core/setup.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/win/core/shim.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/win/core/upgrade.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/win/core/vhost.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/win/templates/vhost.conf.tmpl +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/win/templates/vhost_ssl.conf.tmpl +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev/win/tui.py +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev_stack.egg-info/SOURCES.txt +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev_stack.egg-info/dependency_links.txt +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev_stack.egg-info/entry_points.txt +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev_stack.egg-info/requires.txt +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/ndev_stack.egg-info/top_level.txt +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/setup.cfg +0 -0
- {ndev_stack-0.3.6 → ndev_stack-0.3.7}/tests/test_shim.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ndev-stack
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.7
|
|
4
4
|
Summary: Cross-platform developer stack manager for PHP, FastCGI/PHP-FPM, MariaDB, Redis, PostgreSQL, MongoDB, Nginx, SSL, and Mailpit on Linux and Windows
|
|
5
5
|
Author-email: Ankit Karan <ankit.karan99@gmail.com>
|
|
6
6
|
Project-URL: Homepage, https://github.com/ankitkaran99/ndev
|
|
@@ -37,6 +37,33 @@ def install_host_packages(packages: list[str], show_logs: bool = False):
|
|
|
37
37
|
logger.debug(f"zypper download failed: {e}")
|
|
38
38
|
|
|
39
39
|
rpm_files = list(tmp_dir.rglob("*.rpm"))
|
|
40
|
+
# Auto-detect if any downloaded package is a metapackage requiring another -devel package
|
|
41
|
+
if rpm_files and shutil.which("rpm"):
|
|
42
|
+
downloaded_names = {rpm.stem.split("-")[0] for rpm in rpm_files}
|
|
43
|
+
secondary_pkgs = set()
|
|
44
|
+
for rpm in rpm_files:
|
|
45
|
+
try:
|
|
46
|
+
dep_res = subprocess.run(
|
|
47
|
+
["rpm", "-qp", "--requires", str(rpm)],
|
|
48
|
+
capture_output=True,
|
|
49
|
+
text=True,
|
|
50
|
+
timeout=5
|
|
51
|
+
)
|
|
52
|
+
if dep_res.returncode == 0:
|
|
53
|
+
for line in dep_res.stdout.splitlines():
|
|
54
|
+
req = line.strip().split()[0]
|
|
55
|
+
if req.endswith("-devel") and not any(req.startswith(name) for name in downloaded_names):
|
|
56
|
+
secondary_pkgs.add(req)
|
|
57
|
+
except Exception:
|
|
58
|
+
pass
|
|
59
|
+
if secondary_pkgs:
|
|
60
|
+
try:
|
|
61
|
+
cmd2 = ["zypper", "--pkg-cache-dir", str(tmp_dir), "download"] + list(secondary_pkgs)
|
|
62
|
+
subprocess.run(cmd2, cwd=tmp_dir, capture_output=True, text=True)
|
|
63
|
+
except Exception as e:
|
|
64
|
+
logger.debug(f"zypper secondary download notice: {e}")
|
|
65
|
+
rpm_files = list(tmp_dir.rglob("*.rpm"))
|
|
66
|
+
|
|
40
67
|
if rpm_files and shutil.which("rpm2cpio") and shutil.which("cpio"):
|
|
41
68
|
for rpm in rpm_files:
|
|
42
69
|
extract_dest = tmp_dir / rpm.stem
|
|
@@ -148,6 +148,15 @@ def build_php(version: str, archive_path: Path, show_logs: bool = False) -> Path
|
|
|
148
148
|
env["ICU_CFLAGS"] = inc_dirs
|
|
149
149
|
env["ICU_LIBS"] = f"{lib_dirs} -licui18n -licuuc -licudata -licuio"
|
|
150
150
|
|
|
151
|
+
env["OPENSSL_CFLAGS"] = inc_dirs
|
|
152
|
+
env["OPENSSL_LIBS"] = f"{lib_dirs} -lssl -lcrypto"
|
|
153
|
+
|
|
154
|
+
env["SQLITE3_CFLAGS"] = inc_dirs
|
|
155
|
+
env["SQLITE3_LIBS"] = f"{lib_dirs} -lsqlite3"
|
|
156
|
+
|
|
157
|
+
env["LIBXML_CFLAGS"] = f"-I/usr/local/include/libxml2 -I/usr/include/libxml2 {inc_dirs}"
|
|
158
|
+
env["LIBXML_LIBS"] = f"{lib_dirs} -lxml2"
|
|
159
|
+
|
|
151
160
|
compat_flags = load_compat_args(version)
|
|
152
161
|
if compat_flags:
|
|
153
162
|
logger.info(f"Applying compatibility flags from args file for PHP {version}...")
|
|
@@ -21,12 +21,16 @@ def install_version(version_input: str, show_logs: bool = False) -> str:
|
|
|
21
21
|
"libcurl-devel",
|
|
22
22
|
"libxml2-devel",
|
|
23
23
|
"libopenssl-devel",
|
|
24
|
+
"libopenssl-3-devel",
|
|
25
|
+
"libopenssl-1_1-devel",
|
|
24
26
|
"libzip-devel",
|
|
25
27
|
"libicu-devel",
|
|
26
28
|
"libsodium-devel",
|
|
27
29
|
"libpng16-devel",
|
|
28
30
|
"libjpeg8-devel",
|
|
29
31
|
"libwebp-devel",
|
|
32
|
+
"libwebpdecoder3",
|
|
33
|
+
"libgmpxx4",
|
|
30
34
|
"freetype2-devel",
|
|
31
35
|
"libbz2-devel",
|
|
32
36
|
"gmp-devel",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ndev-stack
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.7
|
|
4
4
|
Summary: Cross-platform developer stack manager for PHP, FastCGI/PHP-FPM, MariaDB, Redis, PostgreSQL, MongoDB, Nginx, SSL, and Mailpit on Linux and Windows
|
|
5
5
|
Author-email: Ankit Karan <ankit.karan99@gmail.com>
|
|
6
6
|
Project-URL: Homepage, https://github.com/ankitkaran99/ndev
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ndev-stack"
|
|
7
|
-
version = "0.3.
|
|
7
|
+
version = "0.3.7"
|
|
8
8
|
description = "Cross-platform developer stack manager for PHP, FastCGI/PHP-FPM, MariaDB, Redis, PostgreSQL, MongoDB, Nginx, SSL, and Mailpit on Linux and Windows"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -310,5 +310,22 @@ i | openSUSE-Tumbleweed-Oss | mariadb | 11.2.3-1.1 | 11
|
|
|
310
310
|
self.assertFalse(avail_none)
|
|
311
311
|
|
|
312
312
|
|
|
313
|
+
class TestPhpDevelPackagesAndBuilder(unittest.TestCase):
|
|
314
|
+
def test_suse_devel_packages_include_openssl3(self):
|
|
315
|
+
with patch("ndev.linux.php.installer.is_suse", return_value=True):
|
|
316
|
+
with patch("ndev.linux.php.installer.resolve_version", return_value=("8.4.27", "f", "s", "u")):
|
|
317
|
+
with patch("ndev.linux.php.installer.download_php_source", return_value=Path("/tmp/fake.tar.xz")):
|
|
318
|
+
with patch("ndev.linux.php.installer.install_host_packages") as mock_install_pkgs:
|
|
319
|
+
with patch("ndev.linux.php.installer.build_php", return_value=Path("/tmp/prefix")):
|
|
320
|
+
from ndev.linux.php.installer import install_version
|
|
321
|
+
install_version("8.4")
|
|
322
|
+
mock_install_pkgs.assert_called_once()
|
|
323
|
+
pkgs = mock_install_pkgs.call_args[0][0]
|
|
324
|
+
self.assertIn("libopenssl-3-devel", pkgs)
|
|
325
|
+
self.assertIn("libopenssl-1_1-devel", pkgs)
|
|
326
|
+
self.assertIn("libwebpdecoder3", pkgs)
|
|
327
|
+
self.assertIn("libgmpxx4", pkgs)
|
|
328
|
+
|
|
329
|
+
|
|
313
330
|
if __name__ == "__main__":
|
|
314
331
|
unittest.main()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|