linux 6
This commit is contained in:
parent
04cbcd5792
commit
a8991c938f
87
README.md
87
README.md
|
@ -2,8 +2,44 @@
|
|||
|
||||
Стек библиотеки IUP
|
||||
|
||||
## Download
|
||||
|
||||
```sh
|
||||
wget https://sourceforge.net/projects/imtoolkit/files/3.15/Docs%20and%20Sources/im-3.15_Sources.tar.gz
|
||||
wget https://sourceforge.net/projects/canvasdraw/files/5.14/Docs%20and%20Sources/ftgl-2.1.5_Sources.tar.gz
|
||||
wget https://sourceforge.net/projects/canvasdraw/files/5.14/Docs%20and%20Sources/freetype-2.10.2_Sources.tar.gz
|
||||
wget https://sourceforge.net/projects/canvasdraw/files/5.14/Docs%20and%20Sources/pdflib_lite-7.0.5_Sources.tar.gz
|
||||
wget https://sourceforge.net/projects/canvasdraw/files/5.14/Docs%20and%20Sources/cd-5.14_Sources.tar.gz
|
||||
wget https://sourceforge.net/projects/iup/files/3.30/Docs%20and%20Sources/iup-3.30_Sources.tar.gz
|
||||
wget https://www.lua.org/ftp/lua-5.4.4.tar.gz
|
||||
```
|
||||
|
||||
## Сборка
|
||||
|
||||
Экспорт переменных, где `/root/iup/` путь к репозиторию, а `Linux62_64` релиз ядра (возможен другой путь после компиляции):
|
||||
|
||||
```sh
|
||||
export USE_PKGCONFIG=Yes
|
||||
export USE_LUA_VERSION=54
|
||||
export USE_LUA54=Yes
|
||||
export LUA_LIB=/root/iup/lua-5.4.4/src
|
||||
export LUA_INC=/root/iup/lua-5.4.4/src
|
||||
export IM_LIB=/root/iup/im/lib/Linux62_64
|
||||
export IM_INC=/root/iup/im/include
|
||||
export FTGL_LIB=/root/iup/ftgl/lib/Linux62_64
|
||||
export FTGL_INC=/root/iup/ftgl/include
|
||||
export PDFLIB_LIB=/root/iup/pdflib7/lib/Linux62_64
|
||||
export PDFLIB_INC=/root/iup/pdflib7/include
|
||||
export CD_LIB=/root/iup/cd/lib/Linux62_64
|
||||
export CD_INC=/root/iup/cd/include
|
||||
```
|
||||
|
||||
Установить при необходимости (возможны ошибки для старых `webkit`):
|
||||
|
||||
```sh
|
||||
export USE_GTK3=Yes
|
||||
```
|
||||
|
||||
### lua
|
||||
|
||||
```sh
|
||||
|
@ -11,4 +47,55 @@ cd lua-5.4.4
|
|||
make linux
|
||||
```
|
||||
|
||||
### pdflib7
|
||||
|
||||
```sh
|
||||
cd pdflib7
|
||||
make
|
||||
```
|
||||
|
||||
### ftgl
|
||||
|
||||
```sh
|
||||
cd ftgl
|
||||
make
|
||||
```
|
||||
|
||||
### fftw
|
||||
|
||||
Библиотеку необходимо собрать [2 раза](https://www.linuxfromscratch.org/blfs/view/stable-systemd/general/fftw.html) - для одинарной точности и двойной точности (`--enable-sse`, `--enable-float`)
|
||||
|
||||
```sh
|
||||
cd fftw
|
||||
./configure --enable-shared --enable-sse --prefix=/usr
|
||||
make -j16
|
||||
make install
|
||||
make clean
|
||||
./configure --enable-shared --enable-float --prefix=/usr
|
||||
make -j16
|
||||
make install
|
||||
```
|
||||
|
||||
### im
|
||||
|
||||
```sh
|
||||
cd im
|
||||
make
|
||||
```
|
||||
|
||||
### cd
|
||||
|
||||
```sh
|
||||
cd cd
|
||||
make
|
||||
```
|
||||
|
||||
### iup
|
||||
|
||||
Применить патч для ядра Linux v6:
|
||||
|
||||
```sh
|
||||
cd iup
|
||||
git apply without-lua-prefix-with-linux6.patch
|
||||
make
|
||||
```
|
||||
|
|
|
@ -1,224 +1,3 @@
|
|||
diff --git a/srclua5/config.mak b/srclua5/config.mak
|
||||
index 77a8920..2118290 100755
|
||||
--- a/srclua5/config.mak
|
||||
+++ b/srclua5/config.mak
|
||||
@@ -38,7 +38,7 @@ ifdef USE_LUA54
|
||||
LUASFX = 54
|
||||
else
|
||||
ifdef USE_LUA53
|
||||
- LUASFX = 53
|
||||
+# LUASFX = 53
|
||||
else
|
||||
ifdef USE_LUA52
|
||||
LUASFX = 52
|
||||
diff --git a/srclua5/iup_mglplot.mak b/srclua5/iup_mglplot.mak
|
||||
index 3c3407c..422eb8d 100755
|
||||
--- a/srclua5/iup_mglplot.mak
|
||||
+++ b/srclua5/iup_mglplot.mak
|
||||
@@ -42,7 +42,7 @@ ifdef USE_LUA54
|
||||
LUASFX = 54
|
||||
else
|
||||
ifdef USE_LUA53
|
||||
- LUASFX = 53
|
||||
+# LUASFX = 53
|
||||
else
|
||||
ifdef USE_LUA52
|
||||
LUASFX = 52
|
||||
diff --git a/srclua5/iup_plot.mak b/srclua5/iup_plot.mak
|
||||
index b2af19d..0ba78fb 100755
|
||||
--- a/srclua5/iup_plot.mak
|
||||
+++ b/srclua5/iup_plot.mak
|
||||
@@ -43,7 +43,7 @@ ifdef USE_LUA54
|
||||
LUASFX = 54
|
||||
else
|
||||
ifdef USE_LUA53
|
||||
- LUASFX = 53
|
||||
+# LUASFX = 53
|
||||
else
|
||||
ifdef USE_LUA52
|
||||
LUASFX = 52
|
||||
diff --git a/srclua5/iup_scintilla.mak b/srclua5/iup_scintilla.mak
|
||||
index 502bf59..08de8a1 100755
|
||||
--- a/srclua5/iup_scintilla.mak
|
||||
+++ b/srclua5/iup_scintilla.mak
|
||||
@@ -42,7 +42,7 @@ ifdef USE_LUA54
|
||||
LUASFX = 54
|
||||
else
|
||||
ifdef USE_LUA53
|
||||
- LUASFX = 53
|
||||
+# LUASFX = 53
|
||||
else
|
||||
ifdef USE_LUA52
|
||||
LUASFX = 52
|
||||
diff --git a/srclua5/iupcd.mak b/srclua5/iupcd.mak
|
||||
index 429cd3e..1ee8c72 100755
|
||||
--- a/srclua5/iupcd.mak
|
||||
+++ b/srclua5/iupcd.mak
|
||||
@@ -44,7 +44,7 @@ ifdef USE_LUA54
|
||||
LUASFX = 54
|
||||
else
|
||||
ifdef USE_LUA53
|
||||
- LUASFX = 53
|
||||
+# LUASFX = 53
|
||||
else
|
||||
ifdef USE_LUA52
|
||||
LUASFX = 52
|
||||
diff --git a/srclua5/iupcontrols.mak b/srclua5/iupcontrols.mak
|
||||
index cb00b95..492906f 100755
|
||||
--- a/srclua5/iupcontrols.mak
|
||||
+++ b/srclua5/iupcontrols.mak
|
||||
@@ -43,7 +43,7 @@ ifdef USE_LUA54
|
||||
LUASFX = 54
|
||||
else
|
||||
ifdef USE_LUA53
|
||||
- LUASFX = 53
|
||||
+# LUASFX = 53
|
||||
else
|
||||
ifdef USE_LUA52
|
||||
LUASFX = 52
|
||||
diff --git a/srclua5/iupfiledlg.mak b/srclua5/iupfiledlg.mak
|
||||
index 6c6cf98..64ca8b3 100755
|
||||
--- a/srclua5/iupfiledlg.mak
|
||||
+++ b/srclua5/iupfiledlg.mak
|
||||
@@ -40,7 +40,7 @@ ifdef USE_LUA54
|
||||
LUASFX = 54
|
||||
else
|
||||
ifdef USE_LUA53
|
||||
- LUASFX = 53
|
||||
+# LUASFX = 53
|
||||
else
|
||||
ifdef USE_LUA52
|
||||
LUASFX = 52
|
||||
diff --git a/srclua5/iupgl.mak b/srclua5/iupgl.mak
|
||||
index f633c1c..e1ae256 100755
|
||||
--- a/srclua5/iupgl.mak
|
||||
+++ b/srclua5/iupgl.mak
|
||||
@@ -41,7 +41,7 @@ ifdef USE_LUA54
|
||||
LUASFX = 54
|
||||
else
|
||||
ifdef USE_LUA53
|
||||
- LUASFX = 53
|
||||
+# LUASFX = 53
|
||||
else
|
||||
ifdef USE_LUA52
|
||||
LUASFX = 52
|
||||
diff --git a/srclua5/iupglcontrols.mak b/srclua5/iupglcontrols.mak
|
||||
index e6469f9..570d924 100755
|
||||
--- a/srclua5/iupglcontrols.mak
|
||||
+++ b/srclua5/iupglcontrols.mak
|
||||
@@ -42,7 +42,7 @@ ifdef USE_LUA54
|
||||
LUASFX = 54
|
||||
else
|
||||
ifdef USE_LUA53
|
||||
- LUASFX = 53
|
||||
+# LUASFX = 53
|
||||
else
|
||||
ifdef USE_LUA52
|
||||
LUASFX = 52
|
||||
diff --git a/srclua5/iupim.mak b/srclua5/iupim.mak
|
||||
index d2eb2d4..c3fc431 100755
|
||||
--- a/srclua5/iupim.mak
|
||||
+++ b/srclua5/iupim.mak
|
||||
@@ -42,7 +42,7 @@ ifdef USE_LUA54
|
||||
LUASFX = 54
|
||||
else
|
||||
ifdef USE_LUA53
|
||||
- LUASFX = 53
|
||||
+# LUASFX = 53
|
||||
else
|
||||
ifdef USE_LUA52
|
||||
LUASFX = 52
|
||||
diff --git a/srclua5/iupimglib.mak b/srclua5/iupimglib.mak
|
||||
index fb56ad6..08afb97 100755
|
||||
--- a/srclua5/iupimglib.mak
|
||||
+++ b/srclua5/iupimglib.mak
|
||||
@@ -40,7 +40,7 @@ ifdef USE_LUA54
|
||||
LUASFX = 54
|
||||
else
|
||||
ifdef USE_LUA53
|
||||
- LUASFX = 53
|
||||
+# LUASFX = 53
|
||||
else
|
||||
ifdef USE_LUA52
|
||||
LUASFX = 52
|
||||
diff --git a/srclua5/iupluascripterdlg.mak b/srclua5/iupluascripterdlg.mak
|
||||
index 56ae104..9132831 100755
|
||||
--- a/srclua5/iupluascripterdlg.mak
|
||||
+++ b/srclua5/iupluascripterdlg.mak
|
||||
@@ -42,7 +42,7 @@ ifdef USE_LUA54
|
||||
LUASFX = 54
|
||||
else
|
||||
ifdef USE_LUA53
|
||||
- LUASFX = 53
|
||||
+# LUASFX = 53
|
||||
else
|
||||
ifdef USE_LUA52
|
||||
LUASFX = 52
|
||||
diff --git a/srclua5/iupole.mak b/srclua5/iupole.mak
|
||||
index 0b625b6..75dd416 100755
|
||||
--- a/srclua5/iupole.mak
|
||||
+++ b/srclua5/iupole.mak
|
||||
@@ -41,7 +41,7 @@ ifdef USE_LUA54
|
||||
LUASFX = 54
|
||||
else
|
||||
ifdef USE_LUA53
|
||||
- LUASFX = 53
|
||||
+# LUASFX = 53
|
||||
else
|
||||
ifdef USE_LUA52
|
||||
LUASFX = 52
|
||||
diff --git a/srclua5/iuptuio.mak b/srclua5/iuptuio.mak
|
||||
index 853430c..09ecae1 100755
|
||||
--- a/srclua5/iuptuio.mak
|
||||
+++ b/srclua5/iuptuio.mak
|
||||
@@ -42,7 +42,7 @@ ifdef USE_LUA54
|
||||
LUASFX = 54
|
||||
else
|
||||
ifdef USE_LUA53
|
||||
- LUASFX = 53
|
||||
+# LUASFX = 53
|
||||
else
|
||||
ifdef USE_LUA52
|
||||
LUASFX = 52
|
||||
diff --git a/srclua5/iupweb.mak b/srclua5/iupweb.mak
|
||||
index 9d7dff2..afe171a 100755
|
||||
--- a/srclua5/iupweb.mak
|
||||
+++ b/srclua5/iupweb.mak
|
||||
@@ -42,7 +42,7 @@ ifdef USE_LUA54
|
||||
LUASFX = 54
|
||||
else
|
||||
ifdef USE_LUA53
|
||||
- LUASFX = 53
|
||||
+# LUASFX = 53
|
||||
else
|
||||
ifdef USE_LUA52
|
||||
LUASFX = 52
|
||||
diff --git a/srcluaconsole/config.mak b/srcluaconsole/config.mak
|
||||
index 12baea3..8b02917 100755
|
||||
--- a/srcluaconsole/config.mak
|
||||
+++ b/srcluaconsole/config.mak
|
||||
@@ -41,7 +41,7 @@ ifdef USE_LUA54
|
||||
endif
|
||||
else
|
||||
ifdef USE_LUA53
|
||||
- LUASFX = 53
|
||||
+# LUASFX = 53
|
||||
ifneq ($(findstring SunOS, $(TEC_UNAME)), )
|
||||
ifneq ($(findstring x86, $(TEC_UNAME)), )
|
||||
FLAGS = -std=gnu99
|
||||
diff --git a/srcluascripter/config.mak b/srcluascripter/config.mak
|
||||
index 76300c6..a201098 100755
|
||||
--- a/srcluascripter/config.mak
|
||||
+++ b/srcluascripter/config.mak
|
||||
@@ -38,7 +38,7 @@ ifdef USE_LUA54
|
||||
endif
|
||||
else
|
||||
ifdef USE_LUA53
|
||||
- LUASFX = 53
|
||||
+# LUASFX = 53
|
||||
ifneq ($(findstring SunOS, $(TEC_UNAME)), )
|
||||
ifneq ($(findstring x86, $(TEC_UNAME)), )
|
||||
FLAGS = -std=gnu99
|
||||
diff --git a/srcvled/config.mak b/srcvled/config.mak
|
||||
index d072320..9daf3e8 100755
|
||||
--- a/srcvled/config.mak
|
||||
|
@ -231,75 +10,98 @@ index d072320..9daf3e8 100755
|
|||
+
|
||||
INCLUDES = ../src
|
||||
diff --git a/srcweb/config.mak b/srcweb/config.mak
|
||||
index c528f2c..0d321a4 100755
|
||||
index c528f2c..4ff9689 100755
|
||||
--- a/srcweb/config.mak
|
||||
+++ b/srcweb/config.mak
|
||||
@@ -35,7 +35,7 @@ else
|
||||
@@ -35,15 +35,20 @@ else
|
||||
LINK_WEBKIT = Yes
|
||||
|
||||
ifdef USE_GTK3
|
||||
- ifneq ($(findstring Linux5, $(TEC_UNAME)), )
|
||||
+ ifneq ($(findstring Linux5, $(subst Linux6,Linux5,$(TEC_UNAME))), )
|
||||
+ ifneq ($(findstring Linux6, $(TEC_UNAME)), )
|
||||
DEFINES += USE_WEBKIT2
|
||||
STDINCS += $(GTK)/include/webkitgtk-4.0
|
||||
else
|
||||
- ifneq ($(findstring Linux4, $(TEC_UNAME)), )
|
||||
+ ifneq ($(findstring Linux5, $(TEC_UNAME)), )
|
||||
DEFINES += USE_WEBKIT2
|
||||
STDINCS += $(GTK)/include/webkitgtk-4.0
|
||||
else
|
||||
- STDINCS += $(GTK)/include/webkitgtk-3.0
|
||||
+ ifneq ($(findstring Linux4, $(TEC_UNAME)), )
|
||||
+ DEFINES += USE_WEBKIT2
|
||||
+ STDINCS += $(GTK)/include/webkitgtk-4.0
|
||||
+ else
|
||||
+ STDINCS += $(GTK)/include/webkitgtk-3.0
|
||||
+ endif
|
||||
endif
|
||||
endif
|
||||
else
|
||||
diff --git a/tecmake.mak b/tecmake.mak
|
||||
index 48991a4..42d7131 100755
|
||||
index 48991a4..bafe31b 100755
|
||||
--- a/tecmake.mak
|
||||
+++ b/tecmake.mak
|
||||
@@ -297,7 +297,7 @@ endif
|
||||
@@ -297,6 +297,9 @@ endif
|
||||
|
||||
ifdef GTK_DEFAULT
|
||||
ifndef USE_GTK2
|
||||
- ifneq ($(findstring Linux5, $(TEC_UNAME)), )
|
||||
+ ifneq ($(findstring Linux5, $(subst Linux6,Linux5,$(TEC_UNAME))), )
|
||||
+ ifneq ($(findstring Linux6, $(TEC_UNAME)), )
|
||||
+ USE_GTK3 = Yes
|
||||
+ endif
|
||||
ifneq ($(findstring Linux5, $(TEC_UNAME)), )
|
||||
USE_GTK3 = Yes
|
||||
endif
|
||||
ifneq ($(findstring Linux4, $(TEC_UNAME)), )
|
||||
@@ -469,7 +469,7 @@ ifdef USE_LUA52
|
||||
LIBLUA_SFX := 52
|
||||
endif
|
||||
ifdef USE_LUA53
|
||||
- LIBLUA_SFX := 53
|
||||
+# LIBLUA_SFX := 53
|
||||
endif
|
||||
ifdef USE_LUA54
|
||||
LIBLUA_SFX := 54
|
||||
@@ -877,8 +877,8 @@ ifdef USE_LUA52
|
||||
endif
|
||||
|
||||
ifdef USE_LUA53
|
||||
- LUA_SFX := 53
|
||||
- LIBLUA_SFX := 53
|
||||
+# LUA_SFX := 53
|
||||
+# LIBLUA_SFX := 53
|
||||
override USE_LUA = Yes
|
||||
LUA := $(LUA53)
|
||||
NO_LUALIB := Yes
|
||||
@@ -1207,7 +1207,7 @@ ifdef USE_CD
|
||||
ifneq ($(findstring Linux4, $(TEC_UNAME)), )
|
||||
LIBS += fontconfig
|
||||
endif
|
||||
- ifneq ($(findstring Linux5, $(TEC_UNAME)), )
|
||||
+ ifneq ($(findstring Linux5, $(subst Linux6,Linux5,$(TEC_UNAME))), )
|
||||
@@ -1210,6 +1213,9 @@ ifdef USE_CD
|
||||
ifneq ($(findstring Linux5, $(TEC_UNAME)), )
|
||||
LIBS += fontconfig
|
||||
endif
|
||||
+ ifneq ($(findstring Linux6, $(TEC_UNAME)), )
|
||||
+ LIBS += fontconfig
|
||||
+ endif
|
||||
ifneq ($(findstring cygw, $(TEC_UNAME)), )
|
||||
@@ -1245,7 +1245,7 @@ ifdef USE_IM
|
||||
LIBS += fontconfig
|
||||
endif
|
||||
@@ -1245,20 +1251,24 @@ ifdef USE_IM
|
||||
endif
|
||||
|
||||
ifdef LINK_WEBKIT
|
||||
- ifneq ($(findstring Linux5, $(TEC_UNAME)), )
|
||||
+ ifneq ($(findstring Linux5, $(subst Linux6,Linux5,$(TEC_UNAME))), )
|
||||
+ ifneq ($(findstring Linux6, $(TEC_UNAME)), )
|
||||
LIBS += webkit2gtk-4.0 gio-2.0
|
||||
else
|
||||
ifneq ($(findstring Linux4, $(TEC_UNAME)), )
|
||||
@@ -1476,7 +1476,7 @@ ifdef USE_GTK
|
||||
ifneq ($(findstring FreeBSD, $(TEC_UNAME)), )
|
||||
STDINCS += /lib/X11R6/include/gtk-2.0
|
||||
endif
|
||||
- ifneq ($(findstring Linux5, $(TEC_UNAME)), )
|
||||
+ ifneq ($(findstring Linux5, $(subst Linux6,Linux5,$(TEC_UNAME))), )
|
||||
- else
|
||||
- ifneq ($(findstring Linux4, $(TEC_UNAME)), )
|
||||
+ else
|
||||
+ ifneq ($(findstring Linux5, $(TEC_UNAME)), )
|
||||
LIBS += webkit2gtk-4.0 gio-2.0
|
||||
else
|
||||
- ifneq ($(findstring Linux3, $(TEC_UNAME)), )
|
||||
- ifdef USE_GTK3
|
||||
- LIBS += webkitgtk-3.0
|
||||
+ ifneq ($(findstring Linux4, $(TEC_UNAME)), )
|
||||
+ LIBS += webkit2gtk-4.0 gio-2.0
|
||||
+ else
|
||||
+ ifneq ($(findstring Linux3, $(TEC_UNAME)), )
|
||||
+ ifdef USE_GTK3
|
||||
+ LIBS += webkitgtk-3.0
|
||||
+ else
|
||||
+ LIBS += webkitgtk-1.0
|
||||
+ endif
|
||||
else
|
||||
- LIBS += webkitgtk-1.0
|
||||
+ LIBS += webkit-1.0
|
||||
endif
|
||||
- else
|
||||
- LIBS += webkit-1.0
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
@@ -1479,6 +1489,9 @@ ifdef USE_GTK
|
||||
ifneq ($(findstring Linux5, $(TEC_UNAME)), )
|
||||
STDINCS += /usr/include/harfbuzz
|
||||
endif
|
||||
+ ifneq ($(findstring Linux6, $(TEC_UNAME)), )
|
||||
+ STDINCS += /usr/include/harfbuzz
|
||||
+ endif
|
||||
endif
|
||||
endif
|
||||
|
||||
|
|
|
@ -0,0 +1,425 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# lsb_release - collect LSB conformance status about a system
|
||||
#
|
||||
# Copyright (C) 2000, 2002, 2004 Free Standards Group, Inc.
|
||||
# Originally by Dominique MASSONIE <mdomi@users.sourceforge.net>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
#
|
||||
# * Changes in 2.0
|
||||
# - Support LSB 2.0 module layout (Mats Wichmann)
|
||||
# The LSB_VERSION is now a colon-separated field of supported module versions
|
||||
# An /etc/lsb-release.d is searched for modules beyond the core.
|
||||
# Only the filenames in this directory is looked at, those names are added
|
||||
# to LSB_VERSION. This allows module support to be handled easily by
|
||||
# package install/removal without a need to edit lsb-release on the fly.
|
||||
# - Correct license: FSG == Free Standards Group, Inc.
|
||||
#
|
||||
# * Changes in 1.4
|
||||
# - "awk" not needed anymore (Loic Lefort)
|
||||
# - fixed bug #121879 reported by Chris D. Faulhaber,
|
||||
# some shells doesn't support local variables
|
||||
# - fixed a bug when single parameter sets many args including -s
|
||||
# - function DisplayProgramVersion (undocumented) now exits script like Usage
|
||||
# - cosmetic changes in comments/outputs
|
||||
#
|
||||
# * Changes in 1.3
|
||||
# - No changes in script, only in build infrastructure
|
||||
#
|
||||
# * Changes in 1.2
|
||||
# - Fixed more bash'isms
|
||||
# - LSB_VERSION is no longer required in /etc/lsb-release file
|
||||
#
|
||||
# * Changes in 1.1
|
||||
# - removed some bash-ism and typos
|
||||
# Notice: script remains broken with ash because of awk issues
|
||||
# - changed licence to FSG - "Free Software Group, Inc"
|
||||
# - fixed problem with --short single arg call
|
||||
# - changed Debian specifics, codename anticipates release num
|
||||
#
|
||||
# Description:
|
||||
# Collect information from sourceable /etc/lsb-release file (present on
|
||||
# LSB-compliant systems) : LSB_VERSION, DISTRIB_ID, DISTRIB_RELEASE,
|
||||
# DISTRIB_CODENAME, DISTRIB_DESCRIPTION (all optional)
|
||||
# Then (if needed) find and add names from /etc/lsb-release.d
|
||||
# Then (if needed) find and parse the /etc/[distro]-release file
|
||||
|
||||
|
||||
###############################################################################
|
||||
# DECLARATIONS
|
||||
###############################################################################
|
||||
|
||||
# This script version
|
||||
SCRIPTVERSION="2.0"
|
||||
|
||||
# Defines the data files
|
||||
INFO_ROOT="/etc" # directory of config files
|
||||
INFO_LSB_FILE="lsb-release" # where to get LSB version
|
||||
INFO_LSB_DIR="lsb-release.d" # where to get LSB addon modules
|
||||
INFO_DISTRIB_SUFFIX="release" # <distrib>-<suffix>
|
||||
ALTERNATE_DISTRIB_FILE="/etc/debian_version" # for Debian [based distrib]
|
||||
ALTERNATE_DISTRIB_NAME="Debian" # "
|
||||
CHECKFIRST="/etc/redhat-release" # check it before file search
|
||||
|
||||
# Defines our exit codes
|
||||
EXIT_STATUS="0" # default = Ok :)
|
||||
ERROR_UNKNOWN="10" # unknown error
|
||||
ERROR_USER="1" # program misuse
|
||||
ERROR_PROGRAM="2" # internal error
|
||||
ERROR_NOANSWER="3" # all required info not available
|
||||
# typically non LSB compliant distro!
|
||||
|
||||
# Defines our messages
|
||||
MSG_LSBVER="LSB Version:\t"
|
||||
MSG_DISTID="Distributor ID:\t"
|
||||
MSG_DISTDESC="Description:\t"
|
||||
MSG_DISTREL="Release:\t"
|
||||
MSG_DISTCODE="Codename:\t"
|
||||
MSG_NA="n/a"
|
||||
MSG_NONE="(none)"
|
||||
MSG_RESULT="" # contains the result in case short output selected
|
||||
|
||||
# Description string delimiter
|
||||
DESCSTR_DELI="release"
|
||||
|
||||
|
||||
###############################################################################
|
||||
# FUNCTIONS
|
||||
###############################################################################
|
||||
|
||||
# Display Program Version for internal use (needed by help2man)
|
||||
DisplayProgramVersion() {
|
||||
echo "FSG `basename $0` v$SCRIPTVERSION"
|
||||
echo
|
||||
echo "Copyright (C) 2000, 2002, 2004 Free Standards Group, Inc."
|
||||
echo "This is free software; see the source for copying conditions. There\
|
||||
is NO"
|
||||
echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR\
|
||||
PURPOSE."
|
||||
echo
|
||||
echo "Originally written by Dominique MASSONIE."
|
||||
|
||||
exit $EXIT_STATUS
|
||||
}
|
||||
|
||||
# defines the Usage for lsb_release
|
||||
Usage() {
|
||||
echo "FSG `basename $0` v$SCRIPTVERSION prints certain LSB (Linux\
|
||||
Standard Base) and"
|
||||
echo "Distribution information."
|
||||
echo
|
||||
echo "Usage: `basename $0` [OPTION]..."
|
||||
echo "With no OPTION specified defaults to -v."
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -v, --version"
|
||||
echo " Display the version of the LSB specification against which the distribution is compliant."
|
||||
echo " -i, --id"
|
||||
echo " Display the string id of the distributor."
|
||||
echo " -d, --description"
|
||||
echo " Display the single line text description of the distribution."
|
||||
echo " -r, --release"
|
||||
echo " Display the release number of the distribution."
|
||||
echo " -c, --codename"
|
||||
echo " Display the codename according to the distribution release."
|
||||
echo " -a, --all"
|
||||
echo " Display all of the above information."
|
||||
echo " -s, --short"
|
||||
echo " Use short output format for information requested by other options (or version if none)."
|
||||
echo " -h, --help"
|
||||
echo " Display this message."
|
||||
|
||||
exit $EXIT_STATUS
|
||||
}
|
||||
|
||||
# Handles the enhanced args (i.e. --something)
|
||||
EnhancedGetopt() {
|
||||
getopt -T >/dev/null 2>&1 # is getopt the enhanced one ?
|
||||
if [ $? = 4 ]
|
||||
then # Yes, advanced args ALLOWED
|
||||
OPT=$(getopt -o acdhirsvp \
|
||||
--long all,codename,description,help,id,release,short,version,program_version \
|
||||
-n 'lsb_release' \
|
||||
-- "$@")
|
||||
else # No, advanced args NOT allowed
|
||||
# convert (if needed) the enhanced options into basic ones
|
||||
MYARGS=$(echo "$@" | sed -e "/--/s/-\(-[[:alnum:]]\)[[:alnum:]]*/\1/g")
|
||||
OPT=$(getopt -o acdhirsvp \
|
||||
-n 'lsb_release' \
|
||||
-- "$MYARGS")
|
||||
fi
|
||||
if [ $? != 0 ]
|
||||
then
|
||||
exit $ERROR_PROGRAM
|
||||
fi
|
||||
|
||||
NB_ARG="" # enabled if many args set in one parameter (i.e. -dris)
|
||||
eval set -- "$OPT"
|
||||
while true ; do
|
||||
case "$1" in
|
||||
-a|--all) ARG_A="y"; NB_ARG="y"; shift;;
|
||||
-c|--codename) ARG_C="y"; NB_ARG="y"; shift;;
|
||||
-d|--description) ARG_D="y"; NB_ARG="y"; shift;;
|
||||
-i|--id) ARG_I="y"; NB_ARG="y"; shift;;
|
||||
-r|--release) ARG_R="y"; NB_ARG="y"; shift;;
|
||||
-s|--short) ARG_S="y"; shift;;
|
||||
-v|--version) ARG_V="y"; NB_ARG="y"; shift;;
|
||||
-p|--program_version) DisplayProgramVersion;;
|
||||
-h|--help) Usage;;
|
||||
--) shift; break;;
|
||||
*) EXIT_STATUS=$ERROR_USER
|
||||
Usage;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
# Get/Init LSB infos (maybe Distrib infos too)
|
||||
GetLSBInfo() {
|
||||
if [ -f "$INFO_ROOT/$INFO_LSB_FILE" ]
|
||||
then
|
||||
# should init at least LSB_VERSION
|
||||
. "$INFO_ROOT/$INFO_LSB_FILE"
|
||||
fi
|
||||
if [ -z "$LSB_VERSION" ]
|
||||
then
|
||||
LSB_VERSION=$MSG_NA
|
||||
else
|
||||
# if we found LSB_VERSION, continue to look in directory
|
||||
if [ -d "$INFO_ROOT/$INFO_LSB_DIR" ]
|
||||
then
|
||||
for tag in "$INFO_ROOT/$INFO_LSB_DIR/"*
|
||||
do
|
||||
LSB_VERSION=$LSB_VERSION:`basename $tag`
|
||||
done
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Get the whole distrib information string (from ARG $1 file)
|
||||
InitDistribInfo() {
|
||||
## Notice: Debian has a debian_version file
|
||||
## (at least) Mandrake has two files, a mandrake and a redhat one
|
||||
FILENAME=$1 # CHECKFIRST or finds' result in GetDistribInfo() or ""
|
||||
|
||||
if [ -z "$FILENAME" ]
|
||||
then
|
||||
if [ -f "$ALTERNATE_DISTRIB_FILE" ]
|
||||
then # For Debian only
|
||||
[ -z "$DISTRIB_ID" ] && DISTRIB_ID="$ALTERNATE_DISTRIB_NAME"
|
||||
[ -z "$DISTRIB_RELEASE" ] \
|
||||
&& DISTRIB_RELEASE=$(cat $ALTERNATE_DISTRIB_FILE)
|
||||
[ -z "$DISTRIB_CODENAME" ] && [ "$DISTRIB_RELEASE" = "2.1" ] \
|
||||
&& DISTRIB_CODENAME="Slink"
|
||||
[ -z "$DISTRIB_CODENAME" ] && [ "$DISTRIB_RELEASE" = "2.2" ] \
|
||||
&& DISTRIB_CODENAME="Potato"
|
||||
# [ -z "$DISTRIB_CODENAME" ] && [ "$DISTRIB_RELEASE" = "2.3" ] \
|
||||
# && DISTRIB_CODENAME="Woody"
|
||||
[ -z "$DISTRIB_CODENAME" ] && DISTRIB_CODENAME=$DISTRIB_RELEASE
|
||||
# build the DISTRIB_DESCRIPTION string (never need to be parsed)
|
||||
[ -z "$DISTRIB_DESCRIPTION" ] \
|
||||
&& DISTRIB_DESCRIPTION="$DISTRIB_ID $DESCSTR_DELI $DISTRIB_REL\
|
||||
EASE ($DISTRIB_CODENAME)"
|
||||
else # Only for nothing known compliant distrib :(
|
||||
[ -z "$DISTRIB_ID" ] && DISTRIB_ID=$MSG_NA
|
||||
[ -z "$DISTRIB_RELEASE" ] && DISTRIB_RELEASE=$MSG_NA
|
||||
[ -z "$DISTRIB_CODENAME" ] && DISTRIB_CODENAME=$MSG_NA
|
||||
[ -z "$DISTRIB_DESCRIPTION" ] && DISTRIB_DESCRIPTION=$MSG_NONE
|
||||
|
||||
EXIT_STATUS=$ERROR_NOANSWER
|
||||
fi
|
||||
else
|
||||
NO="" # is Description string syntax correct ?
|
||||
if [ -z "$DISTRIB_DESCRIPTION" ] \
|
||||
|| [ -n "$(echo $DISTRIB_DESCRIPTION | \
|
||||
sed -e "s/.*$DESCSTR_DELI.*//")" ]
|
||||
then
|
||||
TMP_DISTRIB_DESC=$(head -n 1 $FILENAME 2>/dev/null)
|
||||
[ -z "$DISTRIB_DESCRIPTION" ] \
|
||||
&& DISTRIB_DESCRIPTION=$TMP_DISTRIB_DESC
|
||||
else
|
||||
TMP_DISTRIB_DESC=$DISTRIB_DESCRIPTION
|
||||
fi
|
||||
|
||||
if [ -z "$TMP_DISTRIB_DESC" ] # head or lsb-release init
|
||||
then # file contains no data
|
||||
DISTRIB_DESCRIPTION=$MSG_NONE
|
||||
NO="y"
|
||||
else # Do simple check
|
||||
[ -n "$(echo $TMP_DISTRIB_DESC | \
|
||||
sed -e "s/.*$DESCSTR_DELI.*//")" ] \
|
||||
&& NO="y"
|
||||
fi
|
||||
|
||||
if [ -n "$NO" ]
|
||||
then # does not contain "release" delimiter
|
||||
[ -z "$DISTRIB_ID" ] && DISTRIB_ID=$MSG_NA
|
||||
[ -z "$DISTRIB_RELEASE" ] && DISTRIB_RELEASE=$MSG_NA
|
||||
[ -z "$DISTRIB_CODENAME" ] && DISTRIB_CODENAME=$MSG_NA
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Check missing and requested infos, then find the file and get infos
|
||||
GetDistribInfo() {
|
||||
NO="" # /etc/lsb-release data are enough to reply what is requested?
|
||||
[ -n "$ARG_D" ] && [ -z "$DISTRIB_DESCRIPTION" ] && NO="y"
|
||||
[ -z "$NO" ] && [ -n "$ARG_I" ] && [ -z "$DISTRIB_ID" ] && NO="y"
|
||||
[ -z "$NO" ] && [ -n "$ARG_R" ] && [ -z "$DISTRIB_RELEASE" ] && NO="y"
|
||||
[ -z "$NO" ] && [ -n "$ARG_C" ] && [ -z "$DISTRIB_CODENAME" ] && NO="y"
|
||||
|
||||
if [ -n "$NO" ]
|
||||
then
|
||||
if [ ! -f "$CHECKFIRST" ]
|
||||
then
|
||||
CHECKFIRST=$(find $INFO_ROOT/ -maxdepth 1 \
|
||||
-name \*$INFO_DISTRIB_SUFFIX \
|
||||
-and ! -name $INFO_LSB_FILE \
|
||||
-and -type f \
|
||||
2>/dev/null \
|
||||
| head -n 1 ) # keep one of the files found (if many)
|
||||
fi
|
||||
InitDistribInfo $CHECKFIRST
|
||||
fi
|
||||
}
|
||||
|
||||
# Display version of LSB against which distribution is compliant
|
||||
DisplayVersion() {
|
||||
if [ -z "$ARG_S" ]
|
||||
then
|
||||
echo -e "$MSG_LSBVER$LSB_VERSION" # at least "n/a"
|
||||
else
|
||||
MSG_RESULT="$MSG_RESULT${MSG_RESULT:+ }$LSB_VERSION"
|
||||
fi
|
||||
}
|
||||
|
||||
# Display string id of distributor ( i.e. a single word! )
|
||||
DisplayID() {
|
||||
if [ -z "$DISTRIB_ID" ]
|
||||
then
|
||||
## Linux could be part of the distro name (i.e. Turbolinux) or a separate word
|
||||
## set before, after...
|
||||
## also expect a delimiter ( i.e. "release" )
|
||||
if [ -n "$(echo $TMP_DISTRIB_DESC | sed "s/.*$DESCSTR_DELI.*//")" ]
|
||||
then
|
||||
DISTRIB_ID=$MSG_NA
|
||||
else
|
||||
DISTRIB_ID=$(echo " $TMP_DISTRIB_DESC" \
|
||||
| sed -e "s/[[:blank:]][Ll][Ii][Nn][Uu][Xx][[:blank:]]/ /g" \
|
||||
-e "s/\(.*\)[[:blank:]]$DESCSTR_DELI.*/\1/" -e "s/[[:blank:]]//g")
|
||||
fi
|
||||
fi
|
||||
if [ -z "$ARG_S" ]
|
||||
then
|
||||
echo -e "$MSG_DISTID$DISTRIB_ID"
|
||||
else
|
||||
MSG_RESULT="$MSG_RESULT${MSG_RESULT:+ }$DISTRIB_ID"
|
||||
fi
|
||||
}
|
||||
|
||||
# Diplay single line text description of distribution
|
||||
DisplayDescription() {
|
||||
if [ -z "$DISTRIB_DESCRIPTION" ]
|
||||
then
|
||||
# should not be empty since GetDistribInfo called on Initialization !
|
||||
EXIT_STATUS=$ERROR_PROGRAM
|
||||
fi
|
||||
if [ -z "$ARG_S" ]
|
||||
then
|
||||
echo -e "$MSG_DISTDESC$DISTRIB_DESCRIPTION"
|
||||
else
|
||||
MSG_RESULT="$MSG_RESULT${MSG_RESULT:+ }\"$DISTRIB_DESCRIPTION\""
|
||||
fi
|
||||
}
|
||||
|
||||
# Display release number of distribution.
|
||||
DisplayRelease() {
|
||||
if [ -z "$DISTRIB_RELEASE" ]
|
||||
then # parse the "$DISTRIB_DESCRIPTION" string
|
||||
DISTRIB_RELEASE=$(echo "$TMP_DISTRIB_DESC" | \
|
||||
sed -e "s/.*$DESCSTR_DELI[[:blank:]]*\([[:digit:]][[:graph:]]*\).*/\1/" )
|
||||
[ "$DISTRIB_RELEASE" = "$TMP_DISTRIB_DESC" ] \
|
||||
|| [ -z "$DISTRIB_RELEASE" ] \
|
||||
&& DISTRIB_RELEASE=$MSG_NA
|
||||
fi
|
||||
if [ -z "$ARG_S" ]
|
||||
then
|
||||
echo -e "$MSG_DISTREL$DISTRIB_RELEASE"
|
||||
else
|
||||
MSG_RESULT="$MSG_RESULT${MSG_RESULT:+ }$DISTRIB_RELEASE"
|
||||
fi
|
||||
}
|
||||
|
||||
# Display codename according to distribution version.
|
||||
DisplayCodename() {
|
||||
if [ -z "$DISTRIB_CODENAME" ]
|
||||
then # parse the "$DISTRIB_DESCRIPTION" string
|
||||
DISTRIB_CODENAME=$(echo "$TMP_DISTRIB_DESC" | \
|
||||
sed -e "s/.*$DESCSTR_DELI.*(\(.*\)).*/\1/")
|
||||
[ "$DISTRIB_CODENAME" = "$TMP_DISTRIB_DESC" ] \
|
||||
|| [ -z "$DISTRIB_CODENAME" ] \
|
||||
&& DISTRIB_CODENAME=$MSG_NA
|
||||
fi
|
||||
if [ -z "$ARG_S" ]
|
||||
then
|
||||
echo -e "$MSG_DISTCODE$(echo "$DISTRIB_CODENAME" | \
|
||||
tr -d "[:blank:]")" # Remove blanks
|
||||
else
|
||||
MSG_RESULT="$MSG_RESULT${MSG_RESULT:+ }$(echo "$DISTRIB_CODENAME" | \
|
||||
tr -d "[:blank:]")"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
###############################################################################
|
||||
# MAIN
|
||||
###############################################################################
|
||||
|
||||
# Check if any prog argument
|
||||
if [ -z "$1" ]
|
||||
then
|
||||
ARG_V="y" # default set to Display LSB Version (not Usage)
|
||||
else
|
||||
EnhancedGetopt "$@" # Parse program args
|
||||
if [ -n "$ARG_S" ] && [ -z "$NB_ARG" ]
|
||||
then
|
||||
ARG_V="y" # set also default for --short when single arg
|
||||
fi
|
||||
fi
|
||||
|
||||
# Update args to All if requested
|
||||
if [ -n "$ARG_A" ]
|
||||
then
|
||||
[ -z "$ARG_C" ] && ARG_C="y"
|
||||
[ -z "$ARG_D" ] && ARG_D="y"
|
||||
[ -z "$ARG_I" ] && ARG_I="y"
|
||||
[ -z "$ARG_R" ] && ARG_R="y"
|
||||
[ -z "$ARG_V" ] && ARG_V="y"
|
||||
fi
|
||||
|
||||
# Initialization
|
||||
GetLSBInfo
|
||||
GetDistribInfo
|
||||
|
||||
# Display requested infos (order as follow)
|
||||
[ -n "$ARG_V" ] && DisplayVersion
|
||||
[ -n "$ARG_I" ] && DisplayID
|
||||
[ -n "$ARG_D" ] && DisplayDescription
|
||||
[ -n "$ARG_R" ] && DisplayRelease
|
||||
[ -n "$ARG_C" ] && DisplayCodename
|
||||
|
||||
[ -n "$ARG_S" ] && echo "$MSG_RESULT"
|
||||
|
||||
exit $EXIT_STATUS
|
Loading…
Reference in New Issue