Packaging nanime in Fedora COPR

Over the last summer of 2015, I’ve been watching anime as enjoyable entertainment. To watch anime at that time, it forces me to watch the video by streaming “on browser”. I found it is very annoying since the video player provided by video streaming services is very awful.

Recently, I created nanime. I named it “nanime” because it currently only serves anime links from nanime.yt and since there are no other programs using it. This program will fetch videos of each anime episodes, provided the anime URL from nanime.yt is given.

In this article, I’ll cover and share how I…

  • Created the RPM SPEC file
  • Built the package in COPR
  • Found mistakes

Creating RPM SPEC file

I read about rpm packaging in Fedora Packaging Guidelines. It’s a good guide, though I end up reading rpm-packaging-guide since it has a PDF version. The reason is only that I have my phone everywhere so that I can easily read PDF without opening my browser.

Since nanime is implemented with bash, I can easily implement the SPEC file. Anyway, it’s a very simple application in the first place.

Here is the spec file that I wrote for nanime 0.3

Name:           nanime
Version:        0.3
Release:        2%{?dist}
Summary:        Nanime is a script to easily watch anime from nanime.yt

License:        GPLv3+
URL:            https://github.com/didiksupriadi41/nanime
Source0:        https://github.com/didiksupriadi41/nanime/releases/download/0.3/%{name}-%{version}.tar.gz


Requires:       bash mpv gawk coreutils findutils
BuildArch:      noarch

%description
Easily watch anime from nanime.yt (Indonesian-subbed) in command line interface
powered by mpv, a powerful media player. You need to pass the URL from
nanime.yt.

%prep
%setup -q

%build

%install

mkdir -p %{buildroot}/%{_bindir}

install -m 0755 %{name} %{buildroot}/%{_bindir}/%{name}

%files
%license LICENSE
%{_bindir}/%{name}

%changelog
* Thu Jan 30 2020 Didik Supriadi <didiksupriadi41@gmail.com> - 0.3-2
- Update homepage and source URL

* Fri Jan 24 2020 Didik Supriadi <didiksupriadi41@gmail.com> - 0.3-1
- Updated to nanime 0.3
- Change URL from nanime.tv to nanime.yt

* Thu Jan 23 2020 Didik Supriadi <didiksupriadi41@gmail.com> - 0.2-2
- Remove `youtube-dl` dependency

* Tue Jan 21 2020 Didik Supriadi <didiksupriadi41@gmail.com> - 0.2-1
- Updated to nanime 0.2

* Wed Jan 15 2020 Didik Supriadi <didiksupriadi41@gmail.com> - 0.1-1
- First nanime package.

Building package

First, I create the source package from SPEC file

rpmbuild -bs ~/rpmbuild/SPECS/nanime.spec

And then, I create the binary package

rpmbuild -bb ~/rpmbuild/SPECS/nanime.spec

Actually, I can also create both of them simultaneously

rpmbuild -ba ~/rpmbuild/SPECS/nanime.spec

Lastly, I can build my package in COPR service

copr-cli build nanime ~/rpmbuild/SRPMS/nanime-0.1-1.fc31.src.rpm

Finding mistakes

Fixing bugs

I didn’t test my code thoroughly before building the project in COPR causing a very hurtful slap on my face.

Signing package

Even though adding GPG sign to a package is not a must, It’s a good thing to do and nothing to lose anyway. rpm-packaging-guide also gives a good case where Signed-package is very useful.


Photo by Ian Valerio on Unsplash

Leave a Reply

The opinions expressed on this website are those of the author, @didiksupriadi41. You are responsible for ensuring that you have the necessary permission to reuse any work on this site. The i3 Ninja Logo is a trademark of i3 Ninja.

%d bloggers like this: