Yum & RPM

Distribusjon av programvare med

BLUG Last Thursday 2014-08-28

Gisle Sælensminde

  • Programmerer
  • Jobbet i Vizrt siden 2012

Bård Aase

  • Programmerer
  • Jobbet i Vizrt siden 2009
  • Internasjonal programvareleverandør
  • Markedsledende på TV-grafikkteknologi
  • Hovedkontor i Bergen

Timeline

  • Adactus startet i Trondheim
  • 2009: Vizrt kjøper Adactus
  • 2011: Utviklingen av Mobilize flytter til Bergen
  • 2012: Nytt team etableres
  • 2013: Release 2.4, 2.5 og 3.0 (VMEO)
  • 2014: Release 3.1 (Viz One Publisher)
StructuredAnnotationType whoWhereWhat = Mpeg7Util.getWhoWhereWhat(mpeg7);
if(whoWhereWhat != null) {
  if(whoWhereWhat.getWhatObject() != null
      && !whoWhereWhat.getWhatObject().isEmpty()
      && whoWhereWhat.getWhatObject().get(0).getName() != null
      && !whoWhereWhat.getWhatObject().get(0).getName().isEmpty()) {
    metadata.add(new ItemsMpeg7Data("What Object:",whoWhereWhat.getWhatObject().get(0).getName().get(0).getString()));
  }
  if(whoWhereWhat.getWhatAction() != null
      && !whoWhereWhat.getWhatAction().isEmpty()
      && whoWhereWhat.getWhatAction().get(0).getName() != null
      && !whoWhereWhat.getWhatAction().get(0).getName().isEmpty()) {
    metadata.add(new ItemsMpeg7Data("What Action:",whoWhereWhat.getWhatAction().get(0).getName().get(0).getString()));
  }
  if(whoWhereWhat.getWhere() != null
      && !whoWhereWhat.getWhere().isEmpty()
      && whoWhereWhat.getWhere().get(0).getName() != null
      && !whoWhereWhat.getWhere().get(0).getName().isEmpty()) {
    metadata.add(new ItemsMpeg7Data("Where:",whoWhereWhat.getWhere().get(0).getName().get(0).getString()));
  }
  if(whoWhereWhat.getWhen() != null
      && !whoWhereWhat.getWhen().isEmpty()
      && whoWhereWhat.getWhen().get(0).getName() != null
      && !whoWhereWhat.getWhen().get(0).getName().isEmpty()) {
    metadata.add(new ItemsMpeg7Data("When:",whoWhereWhat.getWhen().get(0).getName().get(0).getString()));
  }
  if(whoWhereWhat.getWho() != null
      && !whoWhereWhat.getWho().isEmpty()
      && whoWhereWhat.getWho().get(0).getName() != null
      && !whoWhereWhat.getWho().get(0).getName().isEmpty()) {
    metadata.add(new ItemsMpeg7Data("Who:",whoWhereWhat.getWho().get(0).getName().get(0).getString()));
  }
  if(whoWhereWhat.getWhy() != null
      && !whoWhereWhat.getWhy().isEmpty()
      && whoWhereWhat.getWhy().get(0).getName() != null
      && !whoWhereWhat.getWhy().get(0).getName().isEmpty()) {
    metadata.add(new ItemsMpeg7Data("Why:",whoWhereWhat.getWhy().get(0).getName().get(0).getString()));
  }
  if(whoWhereWhat.getHow() != null
      && !whoWhereWhat.getHow().isEmpty()
      && whoWhereWhat.getHow().get(0).getName() != null
      && !whoWhereWhat.getHow().get(0).getName().isEmpty()) {
    metadata.add(new ItemsMpeg7Data("How:",whoWhereWhat.getHow().get(0).getName().get(0).getString()));
  }
}

Viz One Publisher

  • Administrasjon og publisering av video

  • Transkoder videoer for publisering til web

  • Transkoder videoer for live publisering til web

  • Device adaptation - finner ut hvilken device som kontakter oss, sender video på riktig format, slik som HLS, RTSP, RTMP, HDS, HTML5 etc.

  • Også brukt som generell transkoder av mange kunder.

     

Systemoversikt

Script basert installasjon

  • ~ 2000 linjer BASH
  • Ingen håndtering av avhengigheter
  • Alle systemer måtte ha hele platformen installert
  • Ingen oppgraderingssti
  • Hvis noe gikk galt under installasjonen måtte en starte helt på nytt.

RPM

  • Verifiserer og dokumenterer avhengigheter
  • Gjør avinstallasjon, reinstallasjon og oppgradering mulig
  • Digitalt signerte pakker
  • Mulighet til å verifisere systemtilstand

Overgangen

  • Lang vei fra script til RPM
  • Måtte kartlegge alle avhengigheter
  • Service scripts måtte lages
  • Byggesystemer

Avhengigheter for kontrolleren

Avhengigheter for transkoderen

Yum

  • Tilfredstiller avhengigheter
  • Installerer avhengigheter i riktig rekkefølge
  • Sentralt lager
  • Sjekker de digitale signaturene på pakkene
  • Oppdateringer

Du får ikke

  • Håndterer ikke avhengigheter på tvers av systemer
  • Yum og RPM hjelper deg ikke med konfigurasjon

RPM SPEC

%define api_ver 1
%define bugfix_ver 0

Name:vizrt-vizremux
Version:3.2.0
Release:0%{?snapshot}
Summary:A library built around FFMpeg for muxing and demuxing.

Group:media/editing
License:proprietary
URL:http://hg.vizrt.internal/hg/vmed/vizremux
%define reponame vizremux
Source0:%{reponame}.tar
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root

BuildRequires:gcc-c++
BuildRequires:gcc
BuildRequires:ffmpeg-devel >= 2.1.1
BuildRequires:openssl-devel

%description
A library built around FFMpeg for muxing and demuxing.

Header og pakkebeskrivelse

%package devel
Summary: Header files, libraries and development documentation for %{name}.
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
Requires: ffmpeg-devel >= 2.1.1
Requires: openssl-devel

%description devel
This package contains the header files, static libraries
and development documentation for %{name}. If you like to develop 
programs using %{name}, you will need to install %{name}-devel.

%package static
Summary: Static libraries for %{name}.
Group: Development/Libraries
Requires: %{name}-devel = %{version}-%{release}

%description static
This package contains the static libraries for %{name}. If you like 
to develop programs and link statically with %{name}, you will need to 
install %{name}-static.

Subpackages

Tilretteleggingsfasen

%prep
%setup -q -n %{reponame}
%build
./waf configure --prefix=%{_prefix} --lib_version=%{api_ver}.%{bugfix_ver}
./waf build
./waf --checkall

Byggefasen

%install
rm -rf %{buildroot}

./waf install --destdir=%{buildroot}

Installasjonsfasen

%clean
rm -rf %{buildroot}

%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig

Opprydding

Filspesifikasjon

%files
%defattr(-,root,root,-)
%{_libdir}/libvizremux.so.*

%files static
%defattr(-,root,root,-)
%{_libdir}/libvizremux.a

%files devel
%defattr(-,root,root,-)
%{_includedir}/*
%{_libdir}/libvizremux.so

Changelog

%changelog
* Wed Mar 19 2014 Bård Aase <baa@vizrt.com> - 2.5.20
- Fixed bug with overlapping captions when compositing (MODS-2407)

* Mon Mar 10 2014 Anders Rein <are@vizrt.com> - 3.0.1
- Bumped vizremux version

Lage Yum repositorie

$ cp my_awesome_app-1.0-1.rpm /sti/til/repo
$ createrepo --database /sti/til/repo

Automatisering

  • Automatisk bygging hver gang kildekoden endres
  • Pakker bygges på virtuell maskin som startes fra snapshot
  • Henter alle bygg-avhenigheter med Yum
  • Ferdige pakker lastes automatisk opp i internt repositorie

Release

  • Velger ut bestemt versjon fra utviklingsrepo
  • Pakken signeres automatisk og lastes opp til offisiellt repositorie

Yum & RPM

By Bård Aase