Skip to content

Commit 3e5971c

Browse files
committed
pg minor version issue resolved in setup
1 parent 7993120 commit 3e5971c

File tree

2 files changed

+62
-17
lines changed

2 files changed

+62
-17
lines changed

cli/scripts/setup.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,20 @@ def setup_pgedge(User=None, Passwd=None, dbName=None, port=None, pg_data=None, p
2828
:param interactive: Defaults to False
2929
:param yes: Accept input parms without prompting to confirm (always set to True when interactive is false)
3030
"""
31-
31+
try:
32+
argv = sys.argv or []
33+
raw_pg_arg = None
34+
for i, a in enumerate(argv):
35+
if a == "--pg_ver" and i + 1 < len(argv):
36+
raw_pg_arg = argv[i + 1]
37+
break
38+
if a.startswith("--pg_ver="):
39+
raw_pg_arg = a.split("=", 1)[1]
40+
break
41+
if raw_pg_arg is not None:
42+
pg_ver = str(raw_pg_arg).strip().strip("'\"")
43+
except Exception:
44+
pass
3245
pgN = os.getenv("pgN", "")
3346
if (pgN > "" ) and (pg_ver is None):
3447
util.message(f"over-riding 'pg_ver' with ENV pgN={pgN}", "debug")

cli/scripts/util.py

Lines changed: 48 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,29 @@ def get_default_spock(pgv):
125125
return(DEFAULT_SPOCK)
126126

127127
def validate_spock_pg_compat(spock_ver: str = None, pg_ver: str = None) -> None:
128-
# --- defaults (keep yours as-is) ---
128+
129+
raw_pg_arg = None
130+
try:
131+
argv = sys.argv or []
132+
for i, a in enumerate(argv):
133+
if a == "--pg_ver" and i + 1 < len(argv):
134+
raw_pg_arg = argv[i + 1]
135+
break
136+
if a.startswith("--pg_ver="):
137+
raw_pg_arg = a.split("=", 1)[1]
138+
break
139+
except Exception:
140+
raw_pg_arg = None
141+
142+
if raw_pg_arg:
143+
# strip surrounding quotes if present
144+
raw_pg_arg = raw_pg_arg.strip().strip("'\"")
145+
146+
# prefer the raw CLI token if we found one; otherwise use the passed value/default
147+
if raw_pg_arg:
148+
pg_ver = raw_pg_arg
129149
pg_ver = str(pg_ver) if pg_ver else str(DEFAULT_PG)
150+
130151
if not spock_ver:
131152
try:
132153
maj = int(pg_ver.split(".", 1)[0])
@@ -135,38 +156,49 @@ def validate_spock_pg_compat(spock_ver: str = None, pg_ver: str = None) -> None:
135156
spock_ver = DEFAULT_SPOCK_17 if maj == 17 else DEFAULT_SPOCK
136157
spock_ver = str(spock_ver)
137158

138-
# --- parse Spock major w/o 'packaging' dependency ---
139-
m_sp = re.fullmatch(r'(\d)(\d)$', spock_ver) # "50" -> "5.0.0"
159+
160+
# Accept exactly two digits like "50" -> "5.0.0" (no change for normal semver).
161+
m_sp = re.fullmatch(r"\d{2}", spock_ver)
140162
if m_sp:
141-
spock_ver = f"{int(m_sp.group(1))}.{int(m_sp.group(2))}.0"
163+
spock_ver = f"{int(spock_ver[0])}.{int(spock_ver[1])}.0"
142164

143165
try:
144166
spock_version_obj = Version.coerce(spock_ver)
145-
except Exception as e:
167+
except Exception:
146168
exit_message(f"Invalid Spock version '{spock_ver}'.", 1, isJSON)
147169

148170
if spock_version_obj.major < 5:
149171
return
150-
172+
173+
174+
pg_for_compare = pg_ver # e.g., "16.10" if recovered from argv
175+
151176
try:
152-
pg_version_obj = Version.coerce(pg_ver)
153-
except Exception as e:
177+
pg_version_obj = Version.coerce(pg_for_compare)
178+
except Exception:
154179
exit_message(f"Invalid PostgreSQL version '{pg_ver}'.", 1, isJSON)
155180

181+
# If user gave only a major (e.g., "16"), skip strict thresholding (matches prior behavior).
156182
if not pg_version_obj.minor:
157183
return
158-
159-
min_version_thresholds = {15: Version.coerce("15.13-2"), 16: Version.coerce("16.9-2"), 17: Version.coerce("17.5-2")}
160-
184+
185+
min_version_thresholds = {
186+
15: Version.coerce("15.13-2"),
187+
16: Version.coerce("16.9-2"),
188+
17: Version.coerce("17.5-2"),
189+
}
190+
161191
if pg_version_obj.major in min_version_thresholds:
162192
min_version_obj = min_version_thresholds[pg_version_obj.major]
163193
min_version_build = min_version_obj.prerelease[0] if min_version_obj.prerelease else "0"
164194
if pg_version_obj < min_version_obj:
165-
exit_message(
166-
f"Spock {spock_ver} requires PostgreSQL {pg_version_obj.major} >= {min_version_obj.major}.{min_version_obj.minor}-{min_version_build}. You provided {pg_ver}.",
167-
1,
168-
isJSON,
169-
)
195+
exit_message(
196+
f"Spock {spock_ver} requires PostgreSQL {pg_version_obj.major} >= "
197+
f"{min_version_obj.major}.{min_version_obj.minor}-{min_version_build}. "
198+
f"You provided {pg_ver}.",
199+
1,
200+
isJSON,
201+
)
170202

171203
def get_guc_value(pg_comp, guc_name):
172204
"""

0 commit comments

Comments
 (0)