Paketbaurichtlinien für Lua
Was ist Lua?
Auf der Lua-Website wird Lua folgendermaßen beschrieben:
„Lua is a powerful, efficient, lightweight, embeddable scripting language. It supports procedural programming, object-oriented programming, functional programming, data-driven programming, and data description.“ „Lua ist eine leistungsstarke, effiziente, leichtgewichtige und einbettbare Skriptsprache. Sie unterstützt prozedurale Programmierung, objektorientierte Programmierung, funktionale Programmierung, datengetriebene Programmierung und Datenbeschreibung.“
Um Lua zu erlernen, lesen Sie Programming in Lua.
Spec-Vorlage für ein Lua-Paket
Viele Lua-Pakete verwenden Lua-rocks für die Paketierung. Es ist hilfreich, die .rockspec-Spezifikation als Leitfaden für die Erstellung Ihrer Spec-Datei zu verwenden. Einige Pakete erfordern die Kompilierung von C-Programmen, andere sind reine Lua-Pakete. Beide haben sehr ähnliche Installationsverzeichnisse.
Summary: Lua integration with libev
Name: lua-ev
License: MIT
Version: 1.5
Release: 2%{?dist}
URL: https://github.com/brimworks/lua-ev
Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz
BuildRequires: cmake
BuildRequires: gcc
BuildRequires: libev-devel
BuildRequires: lua-devel
%description
Event loop programming with Lua.
%prep
%autosetup -n %{name}-%{version}
%build
%cmake -DINSTALL_CMOD=%{lua_libdir}
%cmake_build
%install
%cmake_install
%check
#packaged tests do not work directly
#Use example program as a smoke test
LUA_CPATH=%{buildroot}%{lua_libdir}/?.so \
lua example.lua
LUA_CPATH=%{buildroot}%{lua_libdir}/?.so \
lua -e 'ev = require "ev"; print(ev.version())'
%files
%license README
%doc example.lua
%{lua_libdir}/ev.so
%changelog
* Thu Dec 08 2022 Benson Muite <benson_muite@emailplus.org> - 1.5-1
- Use README as license
* Sat Nov 19 2022 Benson Muite <benson_muite@emailplus.org> - 1.5-2
- Fix install location based on review
- Add further smoke test
* Wed Nov 16 2022 Benson Muite <benson_muite@emailplus.org> - 1.5-1
- Initial release
Benennung
Lua-Add-on-Pakete folgen im Allgemeinen dem Namensschema lua-Modulname. — Beispiele: lua-filesystem, lua-lpeg, lua-moonscript. Wenn der Modulname jedoch eindeutig darauf hinweist, dass es sich um eine Erweiterung für Lua handelt, genügt der Modulname allein. Beispiel: lutok.
Lassen Sie Ihr Urteilsvermögen walten – z.B. steht das zweite l in lua-lpeg bereits für Lua, aber es wird möglicherweise nicht als eindeutig genug angesehen.
Makros
Das Paket lua-devel stellt folgende Makros zum Paketieren von Lua-Erweiterungen bereit:
| Makro | Beschreibung |
|---|---|
|
Version der systemseitig installierten Lua-Version |
|
Installationsverzeichnis für kompilierte Module |
|
Installationsverzeichnis für architekturunabhängige Module |
|
Deklariert die benötigten Laufzeitabhängigkeiten für das Binärpaket |
Für EPEL definieren Sie die folgenden Makros am Anfang Ihrer Spec-Datei:
%{!?lua_version: %global lua_version %{lua: print(string.sub(_VERSION, 5))}}
# for compiled modules
%{!?lua_libdir: %global lua_libdir %{_libdir}/lua/%{lua_version}}
# for arch-independent modules
%{!?lua_pkgdir: %global lua_pkgdir %{_datadir}/lua/%{lua_version}}
Damit das Paket die korrekten Laufzeitabhängigkeiten einbindet, deklarieren Sie diese wie folgt:
Requires: lua >= %{lua_version}
Requires: lua < %{lua: os.setlocale('C'); print(string.sub(_VERSION, 5) + 0.1)}
Want to help? Learn how to contribute to Fedora Docs ›