Skip to main content
Redhat Developers  Logo
  • Products

    Platforms

    • Red Hat Enterprise Linux
      Red Hat Enterprise Linux Icon
    • Red Hat AI
      Red Hat AI
    • Red Hat OpenShift
      Openshift icon
    • Red Hat Ansible Automation Platform
      Ansible icon
    • View All Red Hat Products

    Featured

    • Red Hat build of OpenJDK
    • Red Hat Developer Hub
    • Red Hat JBoss Enterprise Application Platform
    • Red Hat OpenShift Dev Spaces
    • Red Hat OpenShift Local
    • Red Hat Developer Sandbox

      Try Red Hat products and technologies without setup or configuration fees for 30 days with this shared Openshift and Kubernetes cluster.
    • Try at no cost
  • Technologies

    Featured

    • AI/ML
      AI/ML Icon
    • Linux
      Linux Icon
    • Kubernetes
      Cloud icon
    • Automation
      Automation Icon showing arrows moving in a circle around a gear
    • View All Technologies
    • Programming Languages & Frameworks

      • Java
      • Python
      • JavaScript
    • System Design & Architecture

      • Red Hat architecture and design patterns
      • Microservices
      • Event-Driven Architecture
      • Databases
    • Developer Productivity

      • Developer productivity
      • Developer Tools
      • GitOps
    • Automated Data Processing

      • AI/ML
      • Data Science
      • Apache Kafka on Kubernetes
    • Platform Engineering

      • DevOps
      • DevSecOps
      • Ansible automation for applications and services
    • Secure Development & Architectures

      • Security
      • Secure coding
  • Learn

    Featured

    • Kubernetes & Cloud Native
      Openshift icon
    • Linux
      Rhel icon
    • Automation
      Ansible cloud icon
    • AI/ML
      AI/ML Icon
    • View All Learning Resources

    E-Books

    • GitOps Cookbook
    • Podman in Action
    • Kubernetes Operators
    • The Path to GitOps
    • View All E-books

    Cheat Sheets

    • Linux Commands
    • Bash Commands
    • Git
    • systemd Commands
    • View All Cheat Sheets

    Documentation

    • Product Documentation
    • API Catalog
    • Legacy Documentation
  • Developer Sandbox

    Developer Sandbox

    • Access Red Hat’s products and technologies without setup or configuration, and start developing quicker than ever before with our new, no-cost sandbox environments.
    • Explore Developer Sandbox

    Featured Developer Sandbox activities

    • Get started with your Developer Sandbox
    • OpenShift virtualization and application modernization using the Developer Sandbox
    • Explore all Developer Sandbox activities

    Ready to start developing apps?

    • Try at no cost
  • Blog
  • Events
  • Videos

Building birdie -- a Twitter client -- for Red Hat Enterprise Linux 7 Beta

 

March 18, 2014
Ryan Lerch
Related topics:
Linux
Related products:
Red Hat Enterprise Linux

Share:

    Birdie is a beautiful, new Twitter client for the Linux desktop that is not included as official software in Red Hat Enterprise Linux 7 Beta. This post details the steps I followed, and a few of the issues faced when building and packaging birdie for RHEL7 Beta.

    Setting up your build environment

    Starting with a clean install of the RHEL7 Beta Workstation, install the Development Tools group, and the rpmdevtools package with the commands:

    sudo yum groupinstall "Development tools"
    sudo yum install rpmdevtools

    Next, setup the rpmbuild directory in your home directory with the command:

    rpmdev-setuptree

    Get the birdie source

    Download the birdie source from GitHub using the command

    git clone https://github.com/birdieapp/birdie.git

    The main branch of birdie contains GNOME and GTK features not available to us, so we need to use the "legacy" branch of birdie. Use the following commands to switch to the legacy branch, and to create a tarball of the birdie legacy branch source:

    cd birdie
    git checkout legacy
    git archive --format=tar.gz --prefix=birdie-1.1/ legacy > birdie-1.1.tar.gz

    Now, copy the newly created birdie tarball into the SOURCES directory in the ~/rpmbuild directory.

    cp birdie-1.1.tar.gz ~/rpmbuild/SOURCES/

    Getting and editing the birdie Specfile

    Since birdie is in Fedora, we are now going to grab the srpm from the upstream Fedora package, and extract the specfile out of it. First, download the srpm:

    wget https://kojipkgs.fedoraproject.org//packages/birdie/1.1/1.fc20/src/birdie-1.1-1.fc20.src.rpm

    Then extract the specfile from the srpm, and copy it to the ~/rpmbuild/SPECS directory with:

    rpm2cpio birdie-1.1-1.fc20.src.rpm | cpio -id "birdie.spec"
    cp birdie.spec ~/rpmbuild/SPECS/

    Finally, because the Fedora birdie builds against birdie trunk/master, not the legacy branch we want, we need to change a few build dependencies in the specfile for birdie to build on RHEL7 Beta. Remove the following lines in birdie.spec

    BuildRequires: gtk3-devel >= 3.10
    BuildRequires: vala-devel >= 0.22.1

    and change them to

    BuildRequires: gtk3-devel
    BuildRequires: vala-devel
    BuildRequires: libwnck3-devel

    Additionally, change the following two lines from:

    %{_datadir}/glib-2.0/schemas/org.birdieapp.birdie.gschema.xml
    %{_datadir}/appdata/%{name}.appdata.xml

    to

    %{_datadir}/glib-2.0/schemas/org.*.birdie.gschema.xml
    #%{_datadir}/appdata/%{name}.appdata.xml

    Attempt to build the birdie rpm

    First up, we need to install all the build dependencies that birdie requires to build. To do this, use the command:

    sudo yum-builddep ~/rpmbuild/SPECS/birdie.spec

    then build the birdie binary locally with:

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

    However, this build will most likely fail, with the following error (it will be in the scroll back a ways)

    error: Package `Dbusmenu-0.4' not found in specified Vala API directories or GObject-Introspection GIR directories

    Turns out, Birdie Legacy actually requires the libdbusmenu-devel package as a builddep too.

    Building libdbusmenu

    libdbusmenu is not available in RHEL7 Beta, so we have to build that one from the source too. First, change into the SRPM directory in ~/rpmbuild. and download the SRPM from Fedora:

    cd ~/rpmbuild/SRPMS/
    wget https://kojipkgs.fedoraproject.org//packages/libdbusmenu/12.10.2/5.fc20/src/libdbusmenu-12.10.2-5.fc20.src.rpm

    Install the builddeps for, then build the libdbusmenu packages:

    sudo yum-builddep ~/rpmbuild/SRPMS/libdbusmenu-12.10.2-5.fc20.src.rpm
    rpmbuild --rebuild ~/rpmbuild/SRPMS/libdbusmenu-12.10.2-5.fc20.src.rpm

    Then install what we just built. First, the libdbusmenu package, followed by the libdbusmenu-devel package.

    sudo yum localinstall ~/rpmbuild/RPMS/x86_64/libdbusmenu-12.10.2-5.el7.x86_64.rpm
    sudo yum localinstall ~/rpmbuild/RPMS/x86_64/libdbusmenu-devel-12.10.2-5.el7.x86_64.rpm

    Try the birdie build again

    Use the same command as before to build the birdie binary:

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

    Now, once the package is built, you should be able to install birdie with:

    sudo yum localinstall ~/rpmbuild/RPMS/x86_64/birdie-1.1-1.el7.x86_64.rpm

    To start birdie, either type "birdie" in the command line, or find it in the Applications menu under the Internet category.

    Alternatively, just install birdie.

    If you just want to install birdie, and not bother about building it yourself, there is a COPR repo set up to install a pre-built version of Birdie for RHEL7 Beta.

    First, enable the repo on your system:

    sudo curl -o /etc/yum.repos.d/birdie-rhel7.repo https://copr.fedoraproject.org/coprs/ryanlerch/birdie/repo/epel-7-x86_64/

    Then install birdie with:

    sudo yum install birdie

    If you want to learn more about COPR, you should go check out this post which will show you how to get an account and get things built that you can share with others.

    Last updated: June 6, 2023

    Recent Posts

    • A case study in Kubelet regression in OpenShift

    • Profiling vLLM Inference Server with GPU acceleration on RHEL

    • Network performance in distributed training: Maximizing GPU utilization on OpenShift

    • Clang bytecode interpreter update

    • How Red Hat has redefined continuous performance testing

    What’s up next?

     

    Red Hat Developers logo LinkedIn YouTube Twitter Facebook

    Platforms

    • Red Hat AI
    • Red Hat Enterprise Linux
    • Red Hat OpenShift
    • Red Hat Ansible Automation Platform
    • See all products

    Build

    • Developer Sandbox
    • Developer Tools
    • Interactive Tutorials
    • API Catalog

    Quicklinks

    • Learning Resources
    • E-books
    • Cheat Sheets
    • Blog
    • Events
    • Newsletter

    Communicate

    • About us
    • Contact sales
    • Find a partner
    • Report a website issue
    • Site Status Dashboard
    • Report a security problem

    RED HAT DEVELOPER

    Build here. Go anywhere.

    We serve the builders. The problem solvers who create careers with code.

    Join us if you’re a developer, software engineer, web designer, front-end designer, UX designer, computer scientist, architect, tester, product manager, project manager or team lead.

    Sign me up

    Red Hat legal and privacy links

    • About Red Hat
    • Jobs
    • Events
    • Locations
    • Contact Red Hat
    • Red Hat Blog
    • Inclusion at Red Hat
    • Cool Stuff Store
    • Red Hat Summit
    © 2025 Red Hat

    Red Hat legal and privacy links

    • Privacy statement
    • Terms of use
    • All policies and guidelines
    • Digital accessibility

    Report a website issue