czwartek, 17 grudnia 2015

LibreOffice 5.1 rc1 dla Arch Linux (Manjaro)

Właśnie na serwerach deweloperskich zagościła pierwsza wersja kandydująca popularnego pakietu LibreOffice z serii 5.1. Poniżej przedstawiam PKGBUILD umożliwiający budowę i instalację paczki dla Arch Linux (oraz dystrybucji pochodnych, w tym Manjaro). O nowościach tej wersji tej wersji można przeczytać m.in. w artykule na portalu dobreprogramy.pl, nie będę się zatem i rozpisywał i powielał te informacje, które są łatwo dostępne również na stronach związanych z pakietem.
Kilka uwag natomiast o przedstawionym PKGBUILDzie.
Po pierwsze wyszedłem z założenia, że samodzielna kompilacja pakietu ze źródeł, który ma wielkość  ok. 0,5GB to gruba przesada. Nawet na dość szybkich komputerach będzie trwać to bardzo długo. Document Foundation tworzy natomiast paczki w formatach rpm oraz deb, które dość łatwo dają się przekonwertować na format znany pacmanowi, który potrafi go zainstalować i nim zarządzać. Stąd też PKGBUILD po prostu przebudowuje istniejącą paczkę rpm. Zaletą takiego rozwiązania jest stosunkowo krótkie budowanie paczki dla Archa. Po drugie PKGBUILD umożliwia wyłącznie zbudowanie LO 5.1 rc1 w wersji dla systemów 64 bitowych (choć łatwo go można przerobić na wersję dla systemów 32 bitowych). Po trzecie zaś oferuję wyłącznie budowę polskiej wersji językowej (znów - łatwo jest zbudować paczkę w wersji oryginalnej, bądź w innym, dostępnym języku).
Paczka instaluje się w katalogu /opt umożliwiając koegzystencję na jednym komputerze z LibreOffice Fresh bądź Still.
Nie będę powtarzać, że program jest w wersji testowej, że wobec powyższego nie nadaje się do używania "produkcyjnego" itp. Udostępniam dla tych wszystkich, którzy chcą się wdrożyć w rozwój pakietu, choćby poprzez zgłaszanie dostrzeżonych błędów.
Pakiet nie jest moim autorskim rozwiązaniem, a jedynie zmienionym skryptem libreoffice-fresh-rpm udostępnionym na AUR.

PKGBUILD
pkgname=libreoffice-rpm-pl
pkgver=5.1.0.rc1
_pkgver=5.1.0.1
pkgrel=1
pkgdesc="LGPL Office Suite installed from rpms"
arch=('any')
url='http://www.libreoffice.org'
license=('LGPL')
conflicts=('libreoffice-fresh-rpm' 'libreoffice-rpm-rc-pl' 'libreofficedev-rpm-pl')
depends=('glibc>=2.5' 'gtk2>=2.10.4' 'xorg-server')
makedepends=('curl' 'awk')
optdepends=('jre7-openjdk' 'gtk3' 'gst-plugins-base' 'gst-plugins-good' 'gst-plugins-bad' 'gst-plugins-ugly')
source=(
"http://dev-builds.libreoffice.org/pre-releases/rpm/x86_64/LibreOffice_${_pkgver}_Linux_x86-64_rpm.tar.gz"
"http://dev-builds.libreoffice.org/pre-releases/rpm/x86_64/LibreOffice_5.1.0.1_Linux_x86-64_rpm_helppack_pl.tar.gz"
"http://dev-builds.libreoffice.org/pre-releases/rpm/x86_64/LibreOffice_5.1.0.1_Linux_x86-64_rpm_langpack_pl.tar.gz"
)

package() {   ## package function

## check kernel version to allow arbitrarily patched kernels
min_kernMajor=2;
min_kernMinor=6;
min_kernRelease=18;
## in bash, we need to split kernVer assigning into 2 steps
tmp_kernVer=$(uname -r);
new_kernVer=${tmp_kernVer%%-*}
kernVer=(${new_kernVer//./ });
## remove temporary variables
unset new_kernVer tmp_kernVer;

if [ ${kernVer[0]} -le $min_kernMajor ]; then
   if [ ${kernVer[1]} -le $min_kernMinor ]; then
      if [ ${kernVer[2]} -lt $min_kernRelease ]; then
         msg "The kernel version needs to be at least 2.6.18. The current kernel version is $(uname -r). Please update your linux kernel";
         exit;
      fi;
   fi;
fi;

cd ${srcdir};  ## enter the package source directory
## extract rpms and install them
for a in $(ls -d */); do  ## loop for all directories found
  cd "${srcdir}/${a}/RPMS";  ## enter the RPMS directory
  for b in *.rpm; do  ## loop for all rpm files found
    bsdtar -xf $b;  ## extract the rpm files
  done;
  
  cp -rf */ ${pkgdir}/;  ## copy and merge all found directories to the package directory

  ## change the permissions for files that shouldn't be executable
  declare -a wrongexec=("opt/libreoffice$(echo $pkgver | awk -F'.' 'OFS="." {print $1,$2}')/CREDITS.fodt" "opt/libreoffice$(echo $pkgver | awk -F'.' 'OFS="." {print $1,$2}')/LICENSE.fodt" "opt/libreoffice$(echo $pkgver | awk -F'.' 'OFS="." {print $1,$2}')/NOTICE");  ## set the array to change permissions
  for a in ${wrongexec[@]}; do
  chmod 644 ${pkgdir}/$a; ## change permissions to read/write for root, read only for users
  done;
done;
}
md5sums=('41a23a79bf4ceecf18286234a48fed17'
         '483d02dd34ce7620ed04caa07c9950e0'
         'ff99b1cd930a7bcbc124b7ca63219319')