From 32989cc486c643d66829231b325b5dbc850e6629 Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Sun, 2 Jul 2017 14:06:34 +0200 Subject: [PATCH] unixodbc: auto-generate odbcinst.ini This allows ODBC drivers to create odbcinst.ini-snippets in /etc/odbcinst.ini.d/ which will be assembled into /tmp/etc/odbcinst.ini. /etc/odbcinst.ini is provided as a symlink pointing to /tmp/etc/odbcinst.ini Hence the unixODBC-provided PostgreSQL driver was also given an odbcinst.ini.d snippet. Signed-off-by: Daniel Golle --- libs/unixodbc/Makefile | 11 ++++++++--- libs/unixodbc/files/odbc.init | 26 ++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 libs/unixodbc/files/odbc.init diff --git a/libs/unixodbc/Makefile b/libs/unixodbc/Makefile index d962371ba..b13636ad5 100644 --- a/libs/unixodbc/Makefile +++ b/libs/unixodbc/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=unixodbc PKG_VERSION:=2.3.4 -PKG_RELEASE:=2 +PKG_RELEASE:=3 PKG_SOURCE_URL:=ftp://ftp.unixodbc.org/pub/unixODBC/ PKG_SOURCE:=unixODBC-$(PKG_VERSION).tar.gz @@ -98,8 +98,9 @@ define Package/unixodbc/install $(CP) $(PKG_INSTALL_DIR)/usr/lib/libodbc[ci]*so* $(1)/usr/lib/ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libodbc.*so* $(1)/usr/lib/ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libnn*so* $(1)/usr/lib/ - $(INSTALL_DIR) $(1)/etc - $(CP) $(PKG_INSTALL_DIR)/etc/odbc* $(1)/etc/ + $(INSTALL_DIR) $(1)/etc/init.d + $(INSTALL_BIN) ./files/odbc.init $(1)/etc/init.d/odbc + $(LN) /tmp/etc/odbcinst.ini $(1)/etc/odbcinst.ini endef define Package/unixodbc-tools/install @@ -110,6 +111,10 @@ endef define Package/pgsqlodbc/install $(INSTALL_DIR) $(1)/usr/lib $(CP) $(PKG_INSTALL_DIR)/usr/lib/libodbcpsql*so* $(1)/usr/lib/ + $(INSTALL_DIR) $(1)/etc/odbcinst.ini.d/ + echo "[PostgreSQL]" > $(1)/etc/odbcinst.ini.d/pgsqlodbc.ini + echo "Description = unixODBC PostgreSQL driver" >> $(1)/etc/odbcinst.ini.d/pgsqlodbc.ini + echo "Driver = /usr/lib/libodbcpsql.so" >> $(1)/etc/odbcinst.ini.d/pgsqlodbc.ini endef $(eval $(call BuildPackage,unixodbc)) diff --git a/libs/unixodbc/files/odbc.init b/libs/unixodbc/files/odbc.init new file mode 100644 index 000000000..32ae7f8cc --- /dev/null +++ b/libs/unixodbc/files/odbc.init @@ -0,0 +1,26 @@ +#!/bin/sh /etc/rc.common + +START=50 + +gen_odbcinst() { + local inifile + + echo "[ODBC]" + echo "Trace = off" + echo "TraceFile =" + + for inifile in /etc/odbcinst.ini.d/*.ini; do + cat "$inifile" + done +} + +start() { + [ ! -d /tmp/etc ] && mkdir /tmp/etc + + gen_odbcinst > /tmp/etc/odbcinst.ini.new + chmod 0644 /tmp/etc/odbcinst.ini.new + + [ -e /tmp/etc/odbcinst.ini ] && ( rm /tmp/etc/odbcinst.ini || return 1 ) + + mv /tmp/etc/odbcinst.ini.new /tmp/etc/odbcinst.ini +}