scons-xo-exts-lib 1.0.1__py3-none-any.whl → 1.1.0__py3-none-any.whl

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.

Potentially problematic release.


This version of scons-xo-exts-lib might be problematic. Click here for more details.

@@ -11,9 +11,6 @@ import re
11
11
 
12
12
  def get_first_node(nodes):
13
13
  if isinstance(nodes, list):
14
- if len(nodes) != 1:
15
- raise ValueError("Given nodes is not a one-element list")
16
-
17
14
  return nodes[0]
18
15
 
19
16
  return nodes
@@ -17,6 +17,8 @@ def bazel_action(target, source, env):
17
17
  bazel_flags = env.get("BAZEL_FLAGS", "")
18
18
 
19
19
  cmd = f"{bazel_exe} build {bazel_flags} {bazel_pkgs}"
20
+ print(cmd)
21
+
20
22
  result = subprocess.run(
21
23
  args=cmd,
22
24
  capture_output=False,
@@ -17,6 +17,8 @@ def cmake_action(target, source, env):
17
17
  cmake_flags = env.get("CMAKE_FLAGS", "")
18
18
 
19
19
  cmd = f"{cmake_exe} {cmake_flags} {cmake_targets}"
20
+ print(cmd)
21
+
20
22
  result = subprocess.run(
21
23
  args=cmd,
22
24
  capture_output=False,
@@ -54,10 +54,12 @@ def _dotnet_command(env: Environment, source, args: List[str]) -> None:
54
54
  subprocess_env.update(extra_variables)
55
55
 
56
56
  dotnet_exe = _dotnet_get_dotnet_exe(env=env)
57
- subprocess_args = [dotnet_exe] + args
57
+
58
+ cmd = [dotnet_exe] + args
59
+ print(cmd)
58
60
 
59
61
  result = subprocess.run(
60
- args=subprocess_args,
62
+ args=cmd,
61
63
  capture_output=False,
62
64
  check=False,
63
65
  cwd=source_directory,
@@ -28,10 +28,11 @@ def _dune_command(env: Environment, args_string: str, cwd: str) -> int:
28
28
  dune_exe = env.get("DUNE_EXE", "dune")
29
29
  dune_flags = env.get("DUNE_FLAGS", "--display=short")
30
30
 
31
- command = f"{dune_exe} {args_string} {dune_flags}"
31
+ cmd = f"{dune_exe} {args_string} {dune_flags}"
32
+ print(cmd)
32
33
 
33
34
  result = subprocess.run(
34
- args=command,
35
+ args=cmd,
35
36
  capture_output=False,
36
37
  check=False,
37
38
  cwd=cwd,
@@ -8,6 +8,8 @@
8
8
  import os
9
9
  import subprocess
10
10
 
11
+ from SCons.Node import FS
12
+
11
13
  from SCons.Script import Builder
12
14
  from SCons.Script import Environment
13
15
 
@@ -15,13 +17,24 @@ from scons_xo_exts_lib.BuildSupport import NodeMangling
15
17
 
16
18
 
17
19
  def _elisp_construct_load_path(sources: list) -> str:
20
+ """
21
+ :param sources: list of files to construct a load path from
22
+ :returns: Emacs load path command-line options
23
+ """
24
+
18
25
  load_path_flags: set[str] = set()
19
26
 
20
27
  for source in sources:
21
- dir_name = os.path.dirname(str(source))
22
- load_flag = f"-L {dir_name}"
28
+ if isinstance(source, FS.File):
29
+ dir_name = source.get_dir().relpath
30
+ else:
31
+ dir_name = os.path.dirname(str(source))
32
+
33
+ # Then check if the directory **really** exists.
34
+ if dir_name and os.path.exists(dir_name):
35
+ load_flag = f"-L {dir_name}"
23
36
 
24
- load_path_flags.add(load_flag)
37
+ load_path_flags.add(load_flag)
25
38
 
26
39
  return " ".join(load_path_flags)
27
40
 
@@ -58,6 +71,8 @@ def elisp_autoloads_action(target, source, env) -> int:
58
71
  flags = f'--eval "({func})"'
59
72
 
60
73
  cmd = f"{base_args} {flags}"
74
+ print(cmd)
75
+
61
76
  result = subprocess.run(
62
77
  args=cmd,
63
78
  capture_output=False,
@@ -80,6 +95,8 @@ def elisp_binary_action(target, source, env) -> int:
80
95
  flags = f"{comp_flags} {load_path} -f {func}"
81
96
 
82
97
  cmd = f"{base_args} {flags} {srcs}"
98
+ print(cmd)
99
+
83
100
  result = subprocess.run(
84
101
  args=cmd,
85
102
  capture_output=False,
@@ -0,0 +1,67 @@
1
+ #!/usr/bin/env python
2
+
3
+ # This Source Code Form is subject to the terms of the Mozilla Public
4
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
5
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
+
7
+
8
+ import os
9
+ import subprocess
10
+
11
+ from SCons.Script import Builder
12
+ from SCons.Script import Environment
13
+
14
+
15
+ def _get_mix_project(source: list):
16
+ for source_node in source:
17
+ path = source_node.abspath
18
+
19
+ if "mix.exs" in path:
20
+ return path
21
+
22
+ raise RuntimeError("No mix-project in specified sources")
23
+
24
+
25
+ def _mix_command(env: Environment, args_string: str, cwd: str) -> int:
26
+ mix_exe = env.get(key="MIX_EXE", default="mix")
27
+ mix_flags = env.get(key="MIX_FLAGS", default="")
28
+
29
+ cmd = f"{mix_exe} {args_string} {mix_flags}"
30
+ print(cmd)
31
+
32
+ result = subprocess.run(
33
+ args=cmd,
34
+ capture_output=False,
35
+ check=False,
36
+ cwd=cwd,
37
+ shell=True,
38
+ )
39
+
40
+ return result.returncode
41
+
42
+
43
+ def elixir_build_action(target, source, env) -> int:
44
+ elixir_project = _get_mix_project(source=source)
45
+ elixir_base_dir = os.path.dirname(elixir_project)
46
+
47
+ result = _mix_command(
48
+ env=env,
49
+ args_string="escript.build",
50
+ cwd=elixir_base_dir,
51
+ )
52
+
53
+ return result
54
+
55
+
56
+ def generate(env: Environment) -> None:
57
+ elixir_binary_builder = Builder(action=elixir_build_action)
58
+
59
+ env.Append(
60
+ BUILDERS={
61
+ "ElixirBinary": elixir_binary_builder,
62
+ },
63
+ )
64
+
65
+
66
+ def exists(env: Environment):
67
+ return env.Detect("elixir")
@@ -17,6 +17,8 @@ def make_action(target, source, env):
17
17
  make_flags = env.get("MAKE_FLAGS", "")
18
18
 
19
19
  cmd = f"{make_exe} {make_flags} {make_targets}"
20
+ print(cmd)
21
+
20
22
  result = subprocess.run(
21
23
  args=cmd,
22
24
  capture_output=False,
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/env python
2
+
3
+ # This Source Code Form is subject to the terms of the Mozilla Public
4
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
5
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
+
7
+
8
+ import os
9
+ import subprocess
10
+
11
+ from SCons.Script import Builder
12
+
13
+ from scons_xo_exts_lib.BuildSupport import NodeMangling
14
+
15
+
16
+ def meson_action(target, source, env):
17
+ source_dir = NodeMangling.get_first_directory(nodes=source)
18
+ builddir = NodeMangling.get_first_directory(nodes=target)
19
+
20
+ meson_exe = env.get("MESON_EXE", "meson")
21
+ meson_flags = env.get("MESON_FLAGS", "")
22
+
23
+ cmd = f"{meson_exe} setup --reconfigure {meson_flags} {builddir}"
24
+ print(cmd)
25
+
26
+ result = subprocess.run(
27
+ args=cmd,
28
+ cwd=source_dir,
29
+ capture_output=False,
30
+ check=False,
31
+ shell=True,
32
+ )
33
+
34
+ return result.returncode
35
+
36
+
37
+ def generate(env):
38
+ meson_builddir_builder = Builder(action=meson_action)
39
+
40
+ env.Append(BUILDERS={"MesonBuilddir": meson_builddir_builder})
41
+
42
+
43
+ def exists(env):
44
+ return env.Detect("meson")
@@ -9,16 +9,21 @@ import subprocess
9
9
 
10
10
  from SCons.Script import Builder
11
11
 
12
+ from scons_xo_exts_lib.BuildSupport import NodeMangling
13
+
12
14
 
13
15
  def ninja_action(target, source, env):
14
- ninja_targets = " ".join(str(t) for t in target)
16
+ source_dir = NodeMangling.get_first_directory(nodes=source)
15
17
 
16
18
  ninja_exe = env.get("NINJA_EXE", "ninja")
17
19
  ninja_flags = env.get("NINJA_FLAGS", "")
18
20
 
19
- cmd = f"{ninja_exe} {ninja_flags} {ninja_targets}"
21
+ cmd = f"{ninja_exe} {ninja_flags} -C ."
22
+ print(cmd)
23
+
20
24
  result = subprocess.run(
21
25
  args=cmd,
26
+ cwd=source_dir,
22
27
  capture_output=False,
23
28
  check=False,
24
29
  shell=True,
@@ -29,6 +29,8 @@ def orgmode_action(target, source, env):
29
29
  flags = f'{emacs_exec_flags} {load_flags} {inp} --eval "{fun}"'
30
30
 
31
31
  cmd = f"{emacs_exe} {flags}"
32
+ print(cmd)
33
+
32
34
  result = subprocess.run(
33
35
  args=cmd,
34
36
  capture_output=False,
@@ -19,7 +19,9 @@ def pandoc_action(target, source, env):
19
19
  inp = NodeMangling.get_first_node(source).abspath
20
20
  out = NodeMangling.get_first_node(target).abspath
21
21
 
22
- cmd = f"{pandoc_exe} {pandoc_flags} -o {inp} {out}"
22
+ cmd = f"{pandoc_exe} {pandoc_flags} -o {out} {inp}"
23
+ print(cmd)
24
+
23
25
  result = subprocess.run(
24
26
  args=cmd,
25
27
  capture_output=False,
@@ -31,9 +33,9 @@ def pandoc_action(target, source, env):
31
33
 
32
34
 
33
35
  def generate(env):
34
- pandoc_binary_builder = Builder(action=pandoc_action)
36
+ pandoc_file_builder = Builder(action=pandoc_action)
35
37
 
36
- env.Append(BUILDERS={"PandocFile": pandoc_binary_builder})
38
+ env.Append(BUILDERS={"PandocFile": pandoc_file_builder})
37
39
 
38
40
 
39
41
  def exists(env):
@@ -41,6 +41,7 @@ def _racket_raco(env: Environment, source_node, args: str) -> None:
41
41
 
42
42
  directory: str = NodeMangling.get_first_directory(source_node)
43
43
  cmd = f"{raco} {args}"
44
+ print(cmd)
44
45
 
45
46
  result = subprocess.run(
46
47
  args=cmd,
scons_xo_exts_lib/Read.py CHANGED
@@ -30,7 +30,7 @@ def read_line(file_path: str) -> str:
30
30
 
31
31
  lines = read_lines(file_path)
32
32
 
33
- return lines[0]
33
+ return lines[0].strip()
34
34
 
35
35
 
36
36
  def read_version(base_path: str) -> str:
@@ -4,5 +4,5 @@
4
4
  Scons extensions library by XGQT.
5
5
  """
6
6
 
7
- __version__ = "1.0.1"
7
+ __version__ = "1.1.0"
8
8
  __description__ = "Scons extensions library by XGQT"
@@ -0,0 +1,39 @@
1
+ Metadata-Version: 2.4
2
+ Name: scons-xo-exts-lib
3
+ Version: 1.1.0
4
+ Summary: Scons extensions library by XGQT.
5
+ Author-email: Maciej Barć <xgqt@xgqt.org>
6
+ Requires-Python: >=3.12
7
+ Description-Content-Type: text/markdown
8
+ Classifier: Environment :: Console
9
+ Classifier: Operating System :: POSIX
10
+ Classifier: Programming Language :: Python :: 3 :: Only
11
+ Requires-Dist: scons>=4.8.1
12
+ Project-URL: Home, https://gitlab.com/xgqt/xgqt-python-lib-scons-xo-exts/
13
+
14
+ # SCons XO Exts
15
+
16
+ SCons extensions
17
+
18
+ ## About
19
+
20
+ Extensions for SCons, includes Python libraries and builders.
21
+
22
+ ## Repository
23
+
24
+ Upstream repository is <https://gitlab.com/xgqt/xgqt-python-lib-scons-xo-exts/>.
25
+
26
+ ## Package
27
+
28
+ Download from PYPI: <https://pypi.org/project/scons-xo-exts-lib/>.
29
+
30
+ ## License
31
+
32
+ ### Code
33
+
34
+ Code in this project is licensed under the MPL, version 2.0.
35
+
36
+ This Source Code Form is subject to the terms of the Mozilla Public
37
+ License, v. 2.0. If a copy of the MPL was not distributed with this
38
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
39
+
@@ -0,0 +1,25 @@
1
+ scons_xo_exts_lib/Find.py,sha256=J5VcXfBjg9kW_o4v8S3ugnv-JKAV6wzD6xrIw1jMerA,767
2
+ scons_xo_exts_lib/GenericExtensions.py,sha256=c56PZZuDHdche-x1ERC6gIcIENAP8ZD20EQkxvTXAz4,916
3
+ scons_xo_exts_lib/Read.py,sha256=2W-NIeph4qgWC0ZbhMMKIsE0f8s3nGZZQKYBJGHhi24,1050
4
+ scons_xo_exts_lib/__init__.py,sha256=V1FJp26qXQhpZq5CZsurO3EvJdDKquvchPvZ-z3wME0,141
5
+ scons_xo_exts_lib/Actions/Uv.py,sha256=kdocY_tAvzA4awBs4f6djy4Hku4alXh_L7Vy7llNprY,1172
6
+ scons_xo_exts_lib/Actions/__init__.py,sha256=-JIt3g1eBf4bVQNNQd4JBeQNA7o0LK0W9tYKKX_r5s8,22
7
+ scons_xo_exts_lib/BuildSupport/Make.py,sha256=JG7Wi_G9vQeU9UyKTnN8D8akzmrhFYhsQH2zDmO1-u8,472
8
+ scons_xo_exts_lib/BuildSupport/NodeMangling.py,sha256=WJoGrBAtJP_XLNf12nVy1plnwuo4n4_5aY1Fddb0uxg,681
9
+ scons_xo_exts_lib/BuildSupport/__init__.py,sha256=-JIt3g1eBf4bVQNNQd4JBeQNA7o0LK0W9tYKKX_r5s8,22
10
+ scons_xo_exts_lib/Builders/__init__.py,sha256=-JIt3g1eBf4bVQNNQd4JBeQNA7o0LK0W9tYKKX_r5s8,22
11
+ scons_xo_exts_lib/Builders/bazel.py,sha256=d70Aj0_CSOuSmQsjxpJaPcajNIEPAjdwt37B4gkKVu4,882
12
+ scons_xo_exts_lib/Builders/cmake.py,sha256=fiUjoHibdDnJerX0QAxj3ZTTTsW8-nq2xNQ_W7TzRWo,879
13
+ scons_xo_exts_lib/Builders/dotnet.py,sha256=TgeQxScdXQ4m9GHQy4ngiVXHTeoABke-eWuuUtl6SiQ,4418
14
+ scons_xo_exts_lib/Builders/dune.py,sha256=EG3dXQD94Lc6rXHpcCe35d6z53C2AkkhoVEWoZ578PA,2688
15
+ scons_xo_exts_lib/Builders/elisp.py,sha256=mGwUX4GUREXMbtGPGX936reZ9soxt4SQfBCNx8FteNk,3136
16
+ scons_xo_exts_lib/Builders/elixir.py,sha256=YBy68YzWkcjzUEe9WJNXv6MlqTS8V55C3jftJVVGsLA,1532
17
+ scons_xo_exts_lib/Builders/make.py,sha256=bmCli9168zTsTdZTY1v9SOI1HSOye-aOT0mnNg8cyzQ,864
18
+ scons_xo_exts_lib/Builders/meson.py,sha256=f6sriAIsfqNJ8c0SAUs5EPBWFGvvQisnIHb8LCtkh20,1064
19
+ scons_xo_exts_lib/Builders/ninja.py,sha256=5cI4siYvoxnScQuPvJzHWDqJ5he5FFdF7Euip774L_s,960
20
+ scons_xo_exts_lib/Builders/orgmode.py,sha256=ahpwVOVfbJph6N-yrSlgaX9lMWhssKbZAzYyAe0ZMIU,1289
21
+ scons_xo_exts_lib/Builders/pandoc.py,sha256=g3fxWNjIjnFT1XcKTOH_59Z34HAyOAi-OKkfSeDxr24,997
22
+ scons_xo_exts_lib/Builders/racket.py,sha256=iqk_Di6SDB4N8GajjYZxyDLv8zvEW0MyQ2dNRFZBJQs,3186
23
+ scons_xo_exts_lib-1.1.0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
24
+ scons_xo_exts_lib-1.1.0.dist-info/METADATA,sha256=pKAwkgSUbjGKJckR-kC6Trja2ry0KfQoMzdOR8UEo-c,1018
25
+ scons_xo_exts_lib-1.1.0.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: flit 3.11.0
2
+ Generator: flit 3.12.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -1,6 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: scons-xo-exts-lib
3
- Version: 1.0.1
4
- Summary: Scons extensions library by XGQT.
5
- Requires-Python: >=3.12
6
- Requires-Dist: scons>=4.8.1
@@ -1,23 +0,0 @@
1
- scons_xo_exts_lib/Find.py,sha256=J5VcXfBjg9kW_o4v8S3ugnv-JKAV6wzD6xrIw1jMerA,767
2
- scons_xo_exts_lib/GenericExtensions.py,sha256=c56PZZuDHdche-x1ERC6gIcIENAP8ZD20EQkxvTXAz4,916
3
- scons_xo_exts_lib/Read.py,sha256=sXnCuW1-gMX-MeIpCvx45N8Sqnr8Fb4UsJfGdB8reeA,1042
4
- scons_xo_exts_lib/__init__.py,sha256=NI8aNGXEGdlP6U0bH9kKNrKOVF8GHDh2EsvsxxExrJc,141
5
- scons_xo_exts_lib/Actions/Uv.py,sha256=kdocY_tAvzA4awBs4f6djy4Hku4alXh_L7Vy7llNprY,1172
6
- scons_xo_exts_lib/Actions/__init__.py,sha256=-JIt3g1eBf4bVQNNQd4JBeQNA7o0LK0W9tYKKX_r5s8,22
7
- scons_xo_exts_lib/BuildSupport/Make.py,sha256=JG7Wi_G9vQeU9UyKTnN8D8akzmrhFYhsQH2zDmO1-u8,472
8
- scons_xo_exts_lib/BuildSupport/NodeMangling.py,sha256=ynoh1GqQo1BHrNmlzugKsXHjlJkh9QuByGQAl8-UCdY,780
9
- scons_xo_exts_lib/BuildSupport/__init__.py,sha256=-JIt3g1eBf4bVQNNQd4JBeQNA7o0LK0W9tYKKX_r5s8,22
10
- scons_xo_exts_lib/Builders/__init__.py,sha256=-JIt3g1eBf4bVQNNQd4JBeQNA7o0LK0W9tYKKX_r5s8,22
11
- scons_xo_exts_lib/Builders/bazel.py,sha256=eFJZysWV4v63RapZI2Xg0S1FgDJfLbpYtGElx6qENj8,866
12
- scons_xo_exts_lib/Builders/cmake.py,sha256=FoWPK-GUv56aswFdrE6JWqtTIKE2oymPKi_C2ZmNHGo,863
13
- scons_xo_exts_lib/Builders/dotnet.py,sha256=AD-OGbQuvCd1LuJSDtfdCE1OOKB8NQ4_hujaEvfZMbk,4426
14
- scons_xo_exts_lib/Builders/dune.py,sha256=cdPwunYSKM_UCm_OD4nBv6wMDo_AHVoG8kt5TX_KCg4,2681
15
- scons_xo_exts_lib/Builders/elisp.py,sha256=T7j4z6mvCXz1gd9oPoOLqOiVE3YLoY3q6y5wwhZAw8U,2723
16
- scons_xo_exts_lib/Builders/make.py,sha256=fa_cZjR-lTVqFGLjm5EyDBwVxcaaZCL-2h_QKb6RCzU,848
17
- scons_xo_exts_lib/Builders/ninja.py,sha256=FEOMGfTbMWOE2cSlOu9FPXJjYw-uOCY2tfSM-5XFao4,863
18
- scons_xo_exts_lib/Builders/orgmode.py,sha256=iyu4O0xWWVZqx_LNhBb5i1Dt30iuE8VpwmmDNQSMJ4U,1273
19
- scons_xo_exts_lib/Builders/pandoc.py,sha256=CAPyV9K1gdL_XWFodXpw8bEiFhu2_CvV8qNHWdKbifA,985
20
- scons_xo_exts_lib/Builders/racket.py,sha256=yDj_YYtVk15SqrXrjLb8efbYjR8j6VGpLU2pYAVID5I,3171
21
- scons_xo_exts_lib-1.0.1.dist-info/WHEEL,sha256=_2ozNFCLWc93bK4WKHCO-eDUENDlo-dgc9cU3qokYO4,82
22
- scons_xo_exts_lib-1.0.1.dist-info/METADATA,sha256=jOoblyTTD5oYdT0i30R2yz6wlOrCq2fDW7rtJAEJs-s,156
23
- scons_xo_exts_lib-1.0.1.dist-info/RECORD,,