Skip to content

Commit 05ec0e0

Browse files
committed
fix(ODBC): remove broken CSDK extraction from informix.nix
The Informix Developer Edition container does not include the Client SDK (CSDK/ODBC driver). Remove the non-functional extraction function and related code. Add a runtime check that warns if the driver is not registered with unixODBC, with a link to the IBM download page. Also document the --privileged flag requirement for Informix shared memory setup.
1 parent 4509cf0 commit 05ec0e0

File tree

1 file changed

+6
-52
lines changed

1 file changed

+6
-52
lines changed

Data/ODBC/informix.nix

Lines changed: 6 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -136,56 +136,9 @@ POLICYJSON
136136
# Add ODBC dependencies to library path (after poco_env.bash which sets LD_LIBRARY_PATH)
137137
export LD_LIBRARY_PATH="$INFORMIX_CLIENT_DIR/lib:$INFORMIX_CLIENT_DIR/lib/esql:$INFORMIX_CLIENT_DIR/lib/cli:${pkgs.openssl.out}/lib:${pkgs.stdenv.cc.cc.lib}/lib:${pkgs.unixODBC}/lib''${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
138138
139-
# Extract Informix ODBC driver from the container if not already done.
140-
# The Informix container ships the Client SDK (CSDK) which includes the ODBC driver.
141-
extract_informix_client() {
142-
if [ -d "$INFORMIX_CLIENT_DIR/lib" ]; then
143-
echo "Informix client libraries already extracted."
144-
return 0
145-
fi
146-
147-
echo "Extracting Informix ODBC driver from container image..."
148-
mkdir -p "$INFORMIX_CLIENT_DIR/lib/esql" "$INFORMIX_CLIENT_DIR/lib/cli"
149-
150-
# We need a temporary container to copy files from
151-
local tmp_container="poco-informix-extract-$$"
152-
podman create --name "$tmp_container" --platform=linux/amd64 \
153-
icr.io/informix/informix-developer-database:latest /bin/true 2>/dev/null
154-
155-
# Copy the ODBC/ESQL client libraries
156-
# The CSDK libs live under /opt/ibm/informix/lib in the container
157-
podman cp "$tmp_container:/opt/ibm/informix/lib/cli" "$INFORMIX_CLIENT_DIR/lib/" 2>/dev/null || true
158-
podman cp "$tmp_container:/opt/ibm/informix/lib/esql" "$INFORMIX_CLIENT_DIR/lib/" 2>/dev/null || true
159-
160-
# Copy key shared libraries
161-
for lib in libifcli.so libifasf.so libifdmr.so libifgls.so libifglx.so libifos.so libifgen.so libifixl.so; do
162-
podman cp "$tmp_container:/opt/ibm/informix/lib/$lib" "$INFORMIX_CLIENT_DIR/lib/" 2>/dev/null || true
163-
done
164-
165-
# Also copy any versioned .so files
166-
for lib in $(podman exec "$tmp_container" sh -c 'ls /opt/ibm/informix/lib/libif*.so* /opt/ibm/informix/lib/cli/libif*.so* 2>/dev/null' 2>/dev/null); do
167-
local basename=$(basename "$lib")
168-
local dirname=$(dirname "$lib" | sed 's|/opt/ibm/informix/||')
169-
podman cp "$tmp_container:$lib" "$INFORMIX_CLIENT_DIR/$dirname/" 2>/dev/null || true
170-
done
171-
172-
podman rm "$tmp_container" > /dev/null 2>&1 || true
173-
174-
# Check that the ODBC driver was extracted
175-
if ls "$INFORMIX_CLIENT_DIR"/lib/cli/libifcli.so* > /dev/null 2>&1; then
176-
echo "Informix ODBC driver extracted successfully."
177-
elif ls "$INFORMIX_CLIENT_DIR"/lib/libifcli.so* > /dev/null 2>&1; then
178-
echo "Informix ODBC driver extracted successfully."
179-
else
180-
echo "WARNING: Could not find libifcli.so in extracted files."
181-
echo "Contents of $INFORMIX_CLIENT_DIR/lib:"
182-
ls -laR "$INFORMIX_CLIENT_DIR/lib/" 2>/dev/null || echo "(empty)"
183-
fi
184-
}
185-
186-
extract_informix_client
187-
188-
# Find the ODBC driver library
139+
# Find the ODBC driver library.
140+
# The CSDK (Client SDK) must be installed separately — it is NOT included
141+
# in the Informix Developer Edition container image.
189142
ODBC_DRIVER_LIB=""
190143
for candidate in \
191144
"$INFORMIX_CLIENT_DIR/lib/cli/libifcli.so" \
@@ -199,7 +152,8 @@ POLICYJSON
199152
200153
if [ -z "$ODBC_DRIVER_LIB" ]; then
201154
echo "WARNING: Informix ODBC driver library (libifcli.so) not found."
202-
echo "ODBC configuration may be invalid."
155+
echo "Install the IBM Informix Client SDK (CSDK) into $INFORMIX_CLIENT_DIR"
156+
echo "See: https://www.ibm.com/support/pages/download-informix-products"
203157
ODBC_DRIVER_LIB="$INFORMIX_CLIENT_DIR/lib/cli/libifcli.so"
204158
else
205159
echo "Using ODBC driver library: $ODBC_DRIVER_LIB"
@@ -265,7 +219,7 @@ EOF
265219
-e "LICENSE=accept" \
266220
-e "INFORMIX_PASSWORD=$INFORMIX_PASSWORD" \
267221
-p "$INFORMIX_PORT:9088" \
268-
--privileged \
222+
--privileged \ # Required: Informix needs shared memory (IPC) setup
269223
"$INFORMIX_IMAGE"; then
270224
echo "ERROR: Failed to create Informix container"
271225
echo "Container logs:"

0 commit comments

Comments
 (0)