"Follow the white rabbit ......"

Rain_Maker

Administrator
Teammitglied
Und für die Freunde des guten, alten IRC gibt es dann jetzt auch

#www.susefroum.de

auf Freenode.

irc://irc.freenode.net/#www.suseforum.de

Die beiden Channels (Matrix/IRC) sind (sofern ich es nicht verbaselt habe) via matrix.org "gebridged", soll heissen wer im einen schreibt ist auch im anderen zu lesen und vice versa.

Greetz,

RM
 

Rain_Maker

Administrator
Teammitglied
Weil es gerade im Channel die Frage nach Paketen für Riot/Element-Desktop gab und element.io (früher riot.im) nur DEB oder AppImage/FlatPak aber keine RPM-Pakete anbietet. hier ein kleiner Hack um sich ein openSUSE-konformes RPM aus den bereitgestellten DEB-Paketen zu basteln.

Code:
#
# spec file for package element-desktop
#
# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via https://bugs.opensuse.org/
#

%bcond_with srpm

%global __provides_exclude_from ^%{_libdir}/Element/.*\\.so$
%global __requires_exclude ^.*(ffmpeg|widevinecdm).*$
Name: element-desktop
Version: 1.7.1
Release: 1.1
Summary: A feature-rich desktop client for Matrix.org
License: MIT and Apache-2.0
Group: Productivity/Networking/Web/Browsers
Url: https://element.io
Source0: https://packages.riot.im/debian/pool/main/e/element-desktop/element-desktop_%{version}_amd64.deb
%if !%{with srpm}
NoSource: 0
%endif
BuildRequires: build
BuildRequires: build-mkbaselibs
BuildRequires: chrpath
BuildRequires: fdupes
BuildRequires: hicolor-icon-theme
BuildRequires: update-desktop-files
Buildrequires: dpkg
Buildrequires: pkg-config
BuildRequires: pkgconfig(sqlcipher)
PreReq: permissions
Obsoletes: riot-web < %{version}
Obsoletes: riot-desktop < %{version}
Provides: riot-web = %{version}
Provides: riot-desktop = %{version}
%if 0%{suse_version} == 1500
### Leap 15.x
Requires: libsqlcipher-3_20_1-0
%endif
%if 0%{suse_version} > 1500
### Tumbleweed
Requires: libsqlcipher-3_30_1-0
%endif
ExclusiveArch: x86_64

%description
A feature-rich client for Matrix.org (standalone desktop client built with electron).

%prep
%setup -q -c -T

dpkg -x %{SOURCE0} .

gunzip usr/share/doc/%{name}/*.gz

%build
# Nothing to build.

%install
install -d \
%{buildroot}%{_bindir} \
%{buildroot}%{_libdir} \
%{buildroot}%{_datadir}

find . -type f | xargs chmod 644
find . -type d | xargs chmod 755
find . -type f -iname "*.so" | xargs strip
strip opt/Element/{*sandbox,%{name}}
chmod 755 opt/Element/{*sandbox,%{name}}

cp -a usr %{buildroot}
cp -a opt/Element %{buildroot}%{_libdir}/
rm -rf %{buildroot}/%{_datadir}/doc %{buildroot}%{_libdir}/Element/LICENSE*
sed -i "s|Exec=.*|Exec=%{name} %U|g" %{buildroot}%{_datadir}/applications/%{name}.desktop
ln -sf ../%{_lib}/Element/%{name} %{buildroot}%{_bindir}/%{name}
export LIBSQLCIPHER_LIB="$(basename %{_libdir}/libsqlcipher*.so.0)"

echo "Creating symlink to $LIBSQLCIPHER_LIB"

ln -sf ../"$LIBSQLCIPHER_LIB" %{buildroot}/%{_libdir}/Element/libsqlcipher.so.0

%suse_update_desktop_file %{name}

%fdupes %{buildroot}%{_libdir}

%pre
if [ "$1" -eq 1 ] ; then
grep ^flags /proc/cpuinfo | grep -qs sse2
if [ $? -ne 0 ]; then
echo "This computer cannot run %{name} because its hardware is no longer \
supported." 1>&2; exit 1
fi
fi

%post
%icon_theme_cache_post
%desktop_database_post

%postun
%icon_theme_cache_postun
%desktop_database_postun

%files
%defattr(-,root,root,0755)
%license opt/Element/LICENSE*
%doc usr/share/doc/%{name}/*
%{_bindir}/%{name}
%{_libdir}/Element
%{_datadir}/applications/%{name}.desktop
%{_datadir}/icons/hicolor/*/apps/%{name}.*

%changelog
Die entsprechenden DEB-Pakate findet man hier.

https://packages.riot.im/debian/pool/main/e/element-desktop

Bei neueren Versionen muss man natürlich die Version im Spec anpassen.

Greetz,

RM
 

Rain_Maker

Administrator
Teammitglied
Kurzanleitung für RPM-Bastler in spé:

Benötigte Pakete installieren:

Code:
sudo zypper in rpm-build chrpath sqlcipher-devel
Als normaler User (no root needed!) die ggf. noch fehlenden Ordner erstellen.

Code:
cd $HOME

mkdir -p rpmbuild/SPECS rpmbuild/SOURCES rpmbuild/SRPMS rpmbuild/RPMS/{noarch,x86_64} rpmbuild/BUILD rpmbuild/BUILDROOT
Das weiter oben gepostete SPEC-file nach $HOME/rpmbuild/SPECS kopieren.

Geht auch so:

Code:
wget -c https://matrix-client.matrix.org/_matrix/media/r0/download/matrix.org/kiIoUAytwkgRAQyfNeBeAXbc -O $HOME/rpmbuild/SPECS/element-desktop.spec
Wer ein "echtes" src.rpm will, der ändert im SPEC folgende Zeile:

Code:
%bcond_with srpm
zu

Code:
%bcond_without srpm
Danach das entsprechende DEB-Paket herunterladen und in $HOME/rpmbuild/SOURCES ablegen, z.B. so.

Code:
wget -c https://packages.riot.im/debian/pool/main/e/element-desktop/element-desktop_1.7.1_amd64.deb -O $HOME/rpmbuild/SOURCES/element-desktop_1.7.1_amd64.deb
Und jetzt RPM(s) bauen.

Code:
rpmbuild -ba $HOME/rpmbuild/SPECS/element-desktop.spec
*Ratter Ratter Ratter*

Und dann sollte das in etwa herauskommen:

Code:
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.RmIX0l
+ umask 022
+ cd /home/ICH/rpmbuild/BUILD
+ cd /home/ICH/rpmbuild/BUILD
.......

Checking for unpackaged file(s): /usr/lib/rpm/check-files /home/ICH/rpmbuild/BUILDROOT/element-desktop-1.7.1-1.1.x86_64
Wrote: /home/ICH/rpmbuild/SRPMS/element-desktop-1.7.1-1.1.src.rpm
Wrote: /home/ICH/rpmbuild/RPMS/x86_64/element-desktop-1.7.1-1.1.x86_64.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.OWQN3b
+ umask 022
+ cd /home/ICH/rpmbuild/BUILD
+ cd element-desktop-1.7.1
+ /usr/bin/rm -rf /home/ICH/rpmbuild/BUILDROOT/element-desktop-1.7.1-1.1.x86_64
+ rm -rf filelists
Die fertigen RPMs liegen dann in $HOME/rpmbuild/SRPMS und $HOME/rpmbuild/RPMS/x86_64

Greetz,

R(P)M
 

Rain_Maker

Administrator
Teammitglied
Neue Version 1.7.2

Man ändert im SPEC folgende Zeile:

Code:
Version: 1.7.2
Danach das entsprechende DEB-Paket herunterladen und in $HOME/rpmbuild/SOURCES ablegen, z.B. so.

Code:
wget -c https://packages.riot.im/debian/pool/main/e/element-desktop/element-desktop_1.7.2_amd64.deb -O $HOME/rpmbuild/SOURCES/element-desktop_1.7.2_amd64.deb
Rest wie gehabt.

Greetz,

RM

P.S. Ab sofort werde ich nur noch Beiträge hinzufügen, wenn sich etwas mehr als nur eine Versionsnummer ändern sollte. Der/die geneigte Leser(in) sollte selbst auf die Idee kommen, wo man die entsprechenden Versionsnummer anpassen sollte.
 
Oben