Skip to content

Commit

Permalink
Merge pull request #1246 from MatthewReed303/master
Browse files Browse the repository at this point in the history
Update ODBC
  • Loading branch information
unocelli committed Jun 25, 2024
2 parents a6c69ee + c64f632 commit 8b9a567
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 27 deletions.
23 changes: 12 additions & 11 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM node:14-bullseye
FROM node:16-bookworm

RUN apt-get update && apt-get install -y dos2unix

Expand All @@ -8,30 +8,32 @@ WORKDIR /usr/src/app
# Clone FUXA repository
RUN git clone https://github.com/frangoteam/FUXA.git

# Copy odbcinst.ini to /etc
RUN cp FUXA/odbc/odbcinst.ini /etc/odbcinst.ini

# Install build dependencies for node-odbc
RUN apt-get update && apt-get install -y build-essential unixodbc unixodbc-dev

# Convert the script to Unix format and make it executable
RUN dos2unix FUXA/odbc/install_odbc_drivers.sh && chmod +x FUXA/odbc/install_odbc_drivers.sh

WORKDIR /usr/src/app/FUXA/odbc
RUN ls && ./install_odbc_drivers.sh
RUN ./install_odbc_drivers.sh

# Clone node-odbc repository
# Change working directory
WORKDIR /usr/src/app

# Copy odbcinst.ini to /etc
RUN cp FUXA/odbc/odbcinst.ini /etc/odbcinst.ini

# Clone node-odbc repository
RUN git clone https://github.com/markdirish/node-odbc.git

# Change working directory to node-odbc
WORKDIR /usr/src/app/node-odbc

# Install compatible versions of global npm packages
RUN npm install -g npm@7 && \
npm install -g node-gyp@7 && \
npm install -g node-addon-api@5 && \
npm install -g @mapbox/node-pre-gyp@1
RUN npm install -g node-gyp && \
npm install -g npm@8 && \
npm install -g node-addon-api && \
npm install -g @mapbox/node-pre-gyp

# Install dependencies and build node-odbc
RUN npm ci --production && \
Expand All @@ -41,7 +43,6 @@ RUN npm ci --production && \
# Build and install node-odbc
#RUN npm install


# Install Fuxa server
WORKDIR /usr/src/app/FUXA/server
RUN npm install
Expand Down
34 changes: 19 additions & 15 deletions odbc/install_odbc_drivers.sh
Original file line number Diff line number Diff line change
Expand Up @@ -28,33 +28,35 @@ apt-get install -y \
unixodbc \
unixodbc-dev \
odbc-postgresql \
odbc-mariadb \
libsqliteodbc \
freetds-dev \
freetds-bin \
tdsodbc \
libssl1.1 \
libssl3 \
libssl-dev \
apt-transport-https

# Add Microsoft GPG key
curl https://packages.microsoft.com/keys/microsoft.asc | tee /etc/apt/trusted.gpg.d/microsoft.asc

# Detect system architecture and Debian version
architecture=$(get_architecture)
debian_version=$(get_debian_version)

# Choose appropriate package URL based on Debian version
case $debian_version in
9)
curl https://packages.microsoft.com/keys/microsoft.asc | tee /etc/apt/trusted.gpg.d/microsoft.asc
package_url="https://packages.microsoft.com/config/debian/9/prod.list"
;;
10)
curl https://packages.microsoft.com/keys/microsoft.asc | tee /etc/apt/trusted.gpg.d/microsoft.asc
package_url="https://packages.microsoft.com/config/debian/10/prod.list"
;;
11)
curl https://packages.microsoft.com/keys/microsoft.asc | tee /etc/apt/trusted.gpg.d/microsoft.asc
package_url="https://packages.microsoft.com/config/debian/11/prod.list"
;;
12)
curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg
package_url="https://packages.microsoft.com/config/debian/12/prod.list"
;;
*)
Expand Down Expand Up @@ -118,10 +120,10 @@ fi
echo "Downloading MySQL ODBC Driver..."
if [ "$architecture" == "arm64" ]; then
# Download MySQL ODBC Driver for ARM
wget -q "https://dev.mysql.com/get/Downloads/Connector-ODBC/8.3/mysql-connector-odbc-8.3.0-linux-glibc2.28-aarch64.tar.gz" -O mysql-connector-odbc.tar.gz
wget -q "https://dev.mysql.com/get/Downloads/Connector-ODBC/8.4/mysql-connector-odbc-8.4.0-linux-glibc2.28-aarch64.tar.gz" -O mysql-connector-odbc.tar.gz
elif [ "$architecture" == "x64" ] || [ "$architecture" == "x86" ]; then
# Download MySQL ODBC Driver for x64
wget -q "https://dev.mysql.com/get/Downloads/Connector-ODBC/8.3/mysql-connector-odbc-8.3.0-linux-glibc2.28-x86-64bit.tar.gz" -O mysql-connector-odbc.tar.gz
wget -q "https://dev.mysql.com/get/Downloads/Connector-ODBC/8.4/mysql-connector-odbc-8.4.0-linux-glibc2.28-x86-64bit.tar.gz" -O mysql-connector-odbc.tar.gz
else
echo "MySQL ODBC Driver Unsupported architecture: $architecture"
fi
Expand All @@ -134,26 +136,28 @@ if [ "$architecture" == "x64" ] || [ "$architecture" == "x86" ] || [ "$architect
# Install the extracted driver
cd mysql-connector-odbc-*
cp -r bin/* /usr/local/bin
cp -r lib/* /usr/local/lib
cp -r lib/* /usr/lib/odbc

# Copy libmyodbc8*.so to odbc drivers
#cp /usr/local/lib/libmyodbc8a.so /usr/lib/odbc/libmyodbc8a.so
#cp /usr/local/lib/libmyodbc8w.so /usr/lib/odbc/libmyodbc8w.so

# Register the driver
echo "Registering MySQL ODBC Driver..."
myodbc-installer -a -d -n "MySQL ODBC 8.3 Unicode Driver" -t "Driver=/usr/local/lib/libmyodbc8w.so"
myodbc-installer -a -d -n "MySQL ODBC 8.3 ANSI Driver" -t "Driver=/usr/local/lib/libmyodbc8a.so"

# Copy libmyodbc8*.so to odbc drivers
cp /usr/local/lib/libmyodbc8a.so /usr/lib/odbc/libmyodbc8a.so
cp /usr/local/lib/libmyodbc8w.so /usr/lib/odbc/libmyodbc8w.so
myodbc-installer -a -d -n "MySQL ODBC Unicode Driver" -t "Driver=/usr/lib/odbc/libmyodbc8w.so"
myodbc-installer -a -d -n "MySQL ODBC ANSI Driver" -t "Driver=/usr/lib/odbc/libmyodbc8a.so"
fi

# Verify that the driver is installed and registered
echo "Verifying driver installation..."
/usr/local/bin/myodbc-installer -d -l
myodbc-installer -d -l

# Clean up extracted files
echo "Clean up Install Files"
rm -rf mysql-connector-odbc-*
rm -f mysql-connector-odbc.tar.gz

# Clean up apt cache
apt-get clean && rm -rf /var/lib/apt/lists/*
rm /etc/apt/sources.list.d/mssql-release.list && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
apt-get clean

8 changes: 7 additions & 1 deletion odbc/odbcinst.ini
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,10 @@ Driver = /usr/lib/libtdsodbc.so
Description = Microsoft ODBC Driver 18 for SQL Server
Driver = /opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.3.so.2.1
Threading = 1
UsageCount = 1
UsageCount = 1

[MariaDB]
Description=MariaDB Connector/ODBC v.3.2
Driver=/usr/lib/odbc/libmaodbc.so
Setup=/usr/lib/odbc/libodbcmyS.so
FileUsage=1

0 comments on commit 8b9a567

Please sign in to comment.