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 <daniel@makrotopia.org>
This commit is contained in:
Daniel Golle 2017-07-02 14:06:34 +02:00
parent c709189de4
commit 32989cc486
No known key found for this signature in database
GPG Key ID: DD8D36F0A710502F
2 changed files with 34 additions and 3 deletions

View File

@ -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))

View File

@ -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
}