Commit 4fb18607 authored by Brenden Blanco's avatar Brenden Blanco

Update rpm build scripts and README

Remove the unused Dockerfiles.

Create two flavors of spec files, one which includes steps to build
clang from source and link against it, and one which assumes clang is
already available and just builds bcc. The former is more appropriate
for official packaging, the latter for nightly and quick builds.

Also, introduce a numbering scheme for nightly rpm files. The format
will be:
`libbcc-$latest_git_tag-g$latest_git_hash.x86_64.rpm`
as in:
`libbcc-0.1.7-g73c4d1a.x86_64.rpm`

Update the INSTALL.md to mention the RPMs
Signed-off-by: default avatarBrenden Blanco <bblanco@plumgrid.com>
parent db454655
...@@ -36,9 +36,9 @@ Install a 4.3+ kernel from http://kernel.ubuntu.com/~kernel-ppa/mainline, ...@@ -36,9 +36,9 @@ Install a 4.3+ kernel from http://kernel.ubuntu.com/~kernel-ppa/mainline,
for example: for example:
```bash ```bash
VER=4.3.0-040300 VER=4.4.2-040402
PREFIX=http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.3-wily/ PREFIX=http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.3-wily/
REL=201511020949 REL=201602171633
wget ${PREFIX}/linux-headers-${VER}-generic_${VER}.${REL}_amd64.deb wget ${PREFIX}/linux-headers-${VER}-generic_${VER}.${REL}_amd64.deb
wget ${PREFIX}/linux-headers-${VER}_${VER}.${REL}_all.deb wget ${PREFIX}/linux-headers-${VER}_${VER}.${REL}_all.deb
wget ${PREFIX}/linux-image-${VER}-generic_${VER}.${REL}_amd64.deb wget ${PREFIX}/linux-image-${VER}-generic_${VER}.${REL}_amd64.deb
...@@ -48,8 +48,8 @@ sudo dpkg -i linux-*${VER}.${REL}*.deb ...@@ -48,8 +48,8 @@ sudo dpkg -i linux-*${VER}.${REL}*.deb
Update PREFIX to the latest date, and you can browse the files in the PREFIX url to find the REL number. Update PREFIX to the latest date, and you can browse the files in the PREFIX url to find the REL number.
Tagged bcc binary packages are built for Ubuntu Trusty (14.04) and hosted at Tagged and signed bcc binary packages are built for Ubuntu Trusty (14.04) and
http://52.8.15.63/apt/. hosted at http://52.8.15.63/apt/.
To install: To install:
```bash ```bash
...@@ -76,18 +76,18 @@ Install a 4.2+ kernel from ...@@ -76,18 +76,18 @@ Install a 4.2+ kernel from
http://alt.fedoraproject.org/pub/alt/rawhide-kernel-nodebug, for example: http://alt.fedoraproject.org/pub/alt/rawhide-kernel-nodebug, for example:
```bash ```bash
sudo wget http://alt.fedoraproject.org/pub/alt/rawhide-kernel-nodebug/fedora-rawhide-kernel-nodebug.repo -O /etc/yum.repos.d/fedora-rawhide-kernel-nodebug.repo sudo dnf config-manager --add-repo=http://alt.fedoraproject.org/pub/alt/rawhide-kernel-nodebug/fedora-rawhide-kernel-nodebug.repo
sudo dnf install -y kernel-core-4.2.0-1.fc24.x86_64 kernel-4.2.0-1.fc24.x86_64 kernel-devel-4.2.0-1.fc24.x86_64 kernel-modules-4.2.0-1.fc24.x86_64 kernel-headers-4.2.0-1.fc24.x86_64 sudo dnf update
# reboot # reboot
``` ```
Tagged bcc binary packages are built for Fedora 22 and hosted at Nightly bcc binary packages are built for Fedora 23 and 24, hosted at
http://52.8.15.63/yum/. `http://52.8.15.63/yum/nightly/f{23,24}`.
To install: To install (change 'f23' to 'f24' for rawhide):
```bash ```bash
sudo wget http://52.8.15.63/yum/main/f22/iovisor.repo -O /etc/yum.repos.d/iovisor.repo echo -e '[iovisor]\nbaseurl=http://52.8.15.63/yum/nightly/f23/$basearch\nenabled=1\ngpgcheck=0' | sudo tee /etc/yum.repos.d/iovisor.repo
sudo dnf install -y libbcc libbcc-examples python-bcc sudo dnf install bcc-tools
``` ```
## Arch - AUR ## Arch - AUR
...@@ -157,8 +157,6 @@ sudo tar xf clang+llvm-3.7.0-x86_64-fedora22.tar.xz -C /usr/local --strip 1 ...@@ -157,8 +157,6 @@ sudo tar xf clang+llvm-3.7.0-x86_64-fedora22.tar.xz -C /usr/local --strip 1
``` ```
git clone https://github.com/iovisor/bcc.git git clone https://github.com/iovisor/bcc.git
mkdir bcc/build; cd bcc/build mkdir bcc/build; cd bcc/build
# optional
export CC=/usr/local/bin/clang CXX=/usr/local/bin/clang++
cmake .. -DCMAKE_INSTALL_PREFIX=/usr cmake .. -DCMAKE_INSTALL_PREFIX=/usr
make make
sudo make install sudo make install
...@@ -174,7 +172,7 @@ cd llvm/tools; git clone http://llvm.org/git/clang.git ...@@ -174,7 +172,7 @@ cd llvm/tools; git clone http://llvm.org/git/clang.git
cd ..; mkdir -p build/install; cd build cd ..; mkdir -p build/install; cd build
cmake -G "Unix Makefiles" -DLLVM_TARGETS_TO_BUILD="BPF;X86" \ cmake -G "Unix Makefiles" -DLLVM_TARGETS_TO_BUILD="BPF;X86" \
-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/install .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/install ..
make -j4 make
make install make install
export PATH=$PWD/install/bin:$PATH export PATH=$PWD/install/bin:$PATH
``` ```
......
# Copyright (c) PLUMgrid, Inc.
# Licensed under the Apache License, Version 2.0 (the "License")
FROM centos:6
MAINTAINER Brenden Blanco <bblanco@plumgrid.com>
RUN yum -y install bison cmake flex gcc gcc-c++ git glibc-devel glibc-utils python2-devel rpm-build svn tar texinfo-tex wget zip zlib-devel
WORKDIR /root
RUN mkdir -p {BUILD,RPMS,SOURCES,SPECS,SRPMS}
RUN cd SOURCES && wget https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz
RUN cd SOURCES && wget https://ftp.gnu.org/gnu/gcc/gcc-5.1.0/gcc-5.1.0.tar.gz
RUN cd SOURCES && wget http://llvm.org/releases/3.7.0/llvm-3.7.0.src.tar.xz
RUN cd SOURCES && wget http://llvm.org/releases/3.7.0/cfe-3.7.0.src.tar.xz
RUN cd SOURCES && wget https://github.com/iovisor/bcc/archive/v0.1.7.tar.gz
RUN cd SPECS && wget https://raw.githubusercontent.com/iovisor/bcc/v0.1.7/SPECS/bcc.el6.spec
#COPY SPECS/bcc.el6.spec SPECS/
RUN rpmbuild --define "_topdir `pwd`" -ba SPECS/bcc.el6.spec
# Copyright (c) PLUMgrid, Inc.
# Licensed under the Apache License, Version 2.0 (the "License")
FROM centos:6
MAINTAINER Brenden Blanco <bblanco@plumgrid.com>
RUN yum -y install bison cmake flex gcc gcc-c++ git glibc-devel glibc-utils python2-devel rpm-build svn tar texinfo-tex wget zip zlib-devel
WORKDIR /root
RUN mkdir -p {BUILD,RPMS,SOURCES,SPECS,SRPMS}
RUN cd SOURCES && wget https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz
RUN cd SOURCES && wget https://ftp.gnu.org/gnu/gcc/gcc-5.1.0/gcc-5.1.0.tar.gz
RUN cd SOURCES && wget http://llvm.org/releases/3.7.0/llvm-3.7.0.src.tar.xz
RUN cd SOURCES && wget http://llvm.org/releases/3.7.0/cfe-3.7.0.src.tar.xz
RUN cd SOURCES && wget https://github.com/iovisor/bcc/archive/v@REVISION_LAST@.tar.gz
RUN cd SPECS && wget https://raw.githubusercontent.com/iovisor/bcc/v@REVISION_LAST@/SPECS/bcc.el6.spec
#COPY SPECS/bcc.el6.spec SPECS/
RUN rpmbuild --define "_topdir `pwd`" -ba SPECS/bcc.el6.spec
# Copyright (c) PLUMgrid, Inc.
# Licensed under the Apache License, Version 2.0 (the "License")
FROM centos:7
MAINTAINER Brenden Blanco <bblanco@plumgrid.com>
RUN yum -y install bison cmake flex gcc gcc-c++ make python2-devel rpm-build wget zlib-devel
WORKDIR /root
RUN mkdir -p {BUILD,RPMS,SOURCES,SPECS,SRPMS}
RUN cd SOURCES && wget http://llvm.org/releases/3.7.0/llvm-3.7.0.src.tar.xz
RUN cd SOURCES && wget http://llvm.org/releases/3.7.0/cfe-3.7.0.src.tar.xz
RUN cd SOURCES && wget https://github.com/iovisor/bcc/archive/v0.1.7.tar.gz
RUN cd SPECS && wget https://raw.githubusercontent.com/iovisor/bcc/v0.1.7/SPECS/bcc.el7.spec
#COPY SPECS/bcc.el7.spec SPECS/
RUN rpmbuild --define "_topdir `pwd`" -ba SPECS/bcc.el7.spec
# Copyright (c) PLUMgrid, Inc.
# Licensed under the Apache License, Version 2.0 (the "License")
FROM centos:7
MAINTAINER Brenden Blanco <bblanco@plumgrid.com>
RUN yum -y install bison cmake flex gcc gcc-c++ make python2-devel rpm-build wget zlib-devel
WORKDIR /root
RUN mkdir -p {BUILD,RPMS,SOURCES,SPECS,SRPMS}
RUN cd SOURCES && wget http://llvm.org/releases/3.7.0/llvm-3.7.0.src.tar.xz
RUN cd SOURCES && wget http://llvm.org/releases/3.7.0/cfe-3.7.0.src.tar.xz
RUN cd SOURCES && wget https://github.com/iovisor/bcc/archive/v@REVISION_LAST@.tar.gz
RUN cd SPECS && wget https://raw.githubusercontent.com/iovisor/bcc/v@REVISION_LAST@/SPECS/bcc.el7.spec
#COPY SPECS/bcc.el7.spec SPECS/
RUN rpmbuild --define "_topdir `pwd`" -ba SPECS/bcc.el7.spec
# Copyright (c) PLUMgrid, Inc.
# Licensed under the Apache License, Version 2.0 (the "License")
FROM fedora:22
MAINTAINER Brenden Blanco <bblanco@plumgrid.com>
RUN dnf -y install bison cmake flex gcc gcc-c++ libstdc++-static make python2-devel rpm-build wget zlib-devel
WORKDIR /root
RUN mkdir -p {BUILD,RPMS,SOURCES,SPECS,SRPMS}
RUN cd SOURCES && wget http://llvm.org/releases/3.7.0/llvm-3.7.0.src.tar.xz
RUN cd SOURCES && wget http://llvm.org/releases/3.7.0/cfe-3.7.0.src.tar.xz
RUN cd SOURCES && wget https://github.com/iovisor/bcc/archive/v0.1.7.tar.gz
RUN cd SPECS && wget https://raw.githubusercontent.com/iovisor/bcc/v0.1.7/SPECS/bcc.f22.spec
#COPY SPECS/bcc.f22.spec SPECS/
RUN rpmbuild --define "_topdir `pwd`" -ba SPECS/bcc.f22.spec
# Copyright (c) PLUMgrid, Inc.
# Licensed under the Apache License, Version 2.0 (the "License")
FROM fedora:22
MAINTAINER Brenden Blanco <bblanco@plumgrid.com>
RUN dnf -y install bison cmake flex gcc gcc-c++ libstdc++-static make python2-devel rpm-build wget zlib-devel
WORKDIR /root
RUN mkdir -p {BUILD,RPMS,SOURCES,SPECS,SRPMS}
RUN cd SOURCES && wget http://llvm.org/releases/3.7.0/llvm-3.7.0.src.tar.xz
RUN cd SOURCES && wget http://llvm.org/releases/3.7.0/cfe-3.7.0.src.tar.xz
RUN cd SOURCES && wget https://github.com/iovisor/bcc/archive/v@REVISION_LAST@.tar.gz
RUN cd SPECS && wget https://raw.githubusercontent.com/iovisor/bcc/v@REVISION_LAST@/SPECS/bcc.f22.spec
#COPY SPECS/bcc.f22.spec SPECS/
RUN rpmbuild --define "_topdir `pwd`" -ba SPECS/bcc.f22.spec
# Copyright (c) PLUMgrid, Inc.
# Licensed under the Apache License, Version 2.0 (the "License")
FROM fedora:rawhide
MAINTAINER Brenden Blanco <bblanco@plumgrid.com>
RUN dnf -y install bison cmake flex gcc gcc-c++ git libxml2-devel make python2-devel rpm-build wget zlib-devel
WORKDIR /root
RUN wget http://llvm.org/releases/3.7.1/{cfe,llvm}-3.7.1.src.tar.xz
RUN tar -xf llvm-3.7.1.src.tar.xz && mkdir llvm-3.7.1.src/tools/clang && tar -xf cfe-3.7.1.src.tar.xz -C llvm-3.7.1.src/tools/clang --strip 1 && mkdir llvm-3.7.1.src/build
RUN cd llvm-3.7.1.src/build && cmake .. -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="X86;BPF" -DCMAKE_INSTALL_PREFIX=/usr
RUN cd llvm-3.7.1.src/build && make -j8
COPY . bcc
WORKDIR /root/bcc
RUN PATH=/root/llvm-3.7.1.src/build/bin:$PATH ./scripts/build-rpm.sh
%define debug_package %{nil} %define debug_package %{nil}
%define llvmver 3.7.0 %define llvmver 3.7.1
Name: bcc Name: bcc
Version: 0.1.7 Version: @REVISION@
Release: 1%{?dist} Release: @GIT_REV_COUNT@
Summary: BPF Compiler Collection (BCC) Summary: BPF Compiler Collection (BCC)
Group: Development/Languages Group: Development/Languages
License: ASL 2.0 License: ASL 2.0
URL: https://github.com/iovisor/bcc URL: https://github.com/iovisor/bcc
Source0: https://github.com/iovisor/bcc/archive/v%{version}.tar.gz Source0: https://github.com/iovisor/bcc/archive/v%{version}.tar.gz
Source1: http://llvm.org/releases/3.7.0/llvm-%{llvmver}.src.tar.xz Source1: http://llvm.org/releases/%{llvmver}/llvm-%{llvmver}.src.tar.xz
Source2: http://llvm.org/releases/3.7.0/cfe-%{llvmver}.src.tar.xz Source2: http://llvm.org/releases/%{llvmver}/cfe-%{llvmver}.src.tar.xz
BuildArch: x86_64 BuildArch: x86_64
BuildRequires: bison, cmake >= 2.8.7, flex, gcc, gcc-c++, python2-devel BuildRequires: bison, cmake >= 2.8.7, flex, gcc, gcc-c++, libxml2-devel, python2-devel
%description %description
Python bindings for BPF Compiler Collection (BCC). Control a BPF program from Python bindings for BPF Compiler Collection (BCC). Control a BPF program from
...@@ -25,7 +25,7 @@ userspace. ...@@ -25,7 +25,7 @@ userspace.
%setup -T -b 1 -n llvm-%{llvmver}.src %setup -T -b 1 -n llvm-%{llvmver}.src
mkdir tools/clang mkdir tools/clang
tar -xvvJf %{_sourcedir}/cfe-%{llvmver}.src.tar.xz -C tools/clang --strip 1 tar -xvvJf %{_sourcedir}/cfe-%{llvmver}.src.tar.xz -C tools/clang --strip 1
%setup -D -n bcc-%{version} %setup -D -n bcc
%build %build
...@@ -36,15 +36,15 @@ export PATH="%{_builddir}/usr/bin":$PATH ...@@ -36,15 +36,15 @@ export PATH="%{_builddir}/usr/bin":$PATH
pushd %{_builddir}/llvm-%{llvmver}.src pushd %{_builddir}/llvm-%{llvmver}.src
mkdir build mkdir build
cd build cd build
../configure --disable-assertions --enable-optimized --prefix="%{_builddir}/usr" cmake .. -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="X86;BPF" -DCMAKE_INSTALL_PREFIX=/usr
make -j`grep -c ^process /proc/cpuinfo` make %{?_smp_mflags}
make install make install DESTDIR="%{_builddir}"
popd popd
mkdir build mkdir build
pushd build pushd build
cmake .. -DREVISION=%{version} -DCMAKE_INSTALL_PREFIX=/usr cmake .. -DREVISION_LAST=%{version} -DREVISION=%{version} -DCMAKE_INSTALL_PREFIX=/usr
make -j`grep -c ^process /proc/cpuinfo` make %{?_smp_mflags}
popd popd
%install %install
...@@ -62,17 +62,24 @@ Shared Library for BPF Compiler Collection (BCC) ...@@ -62,17 +62,24 @@ Shared Library for BPF Compiler Collection (BCC)
%package -n libbcc-examples %package -n libbcc-examples
Summary: Examples for BPF Compiler Collection (BCC) Summary: Examples for BPF Compiler Collection (BCC)
Requires: libbcc
%description -n libbcc-examples %description -n libbcc-examples
Examples for BPF Compiler Collection (BCC) Examples for BPF Compiler Collection (BCC)
%package -n python-bcc %package -n python-bcc
Summary: Python bindings for BPF Compiler Collection (BCC) Summary: Python bindings for BPF Compiler Collection (BCC)
Requires: libbcc
%description -n python-bcc %description -n python-bcc
Python bindings for BPF Compiler Collection (BCC) Python bindings for BPF Compiler Collection (BCC)
%package -n bcc-tools
Summary: Command line tools for BPF Compiler Collection (BCC)
Requires: python-bcc
%description -n bcc-tools
Command line tools for BPF Compiler Collection (BCC)
%files -n python-bcc %files -n python-bcc
%{python_sitelib}/bcc* %{python_sitelib}/bcc*
%exclude %{python_sitelib}/*.egg-info
%files -n libbcc %files -n libbcc
/usr/lib64/* /usr/lib64/*
...@@ -80,3 +87,13 @@ Python bindings for BPF Compiler Collection (BCC) ...@@ -80,3 +87,13 @@ Python bindings for BPF Compiler Collection (BCC)
%files -n libbcc-examples %files -n libbcc-examples
/usr/share/bcc/examples/* /usr/share/bcc/examples/*
%exclude /usr/share/bcc/examples/*.pyc
%exclude /usr/share/bcc/examples/*.pyo
%exclude /usr/share/bcc/examples/*/*.pyc
%exclude /usr/share/bcc/examples/*/*.pyo
%exclude /usr/share/bcc/examples/*/*/*.pyc
%exclude /usr/share/bcc/examples/*/*/*.pyo
%files -n bcc-tools
/usr/share/bcc/tools/*
/usr/share/bcc/man/*
# Copyright (c) PLUMgrid, Inc.
# Licensed under the Apache License, Version 2.0 (the "License")
%define debug_package %{nil}
%define llvmver 3.7.0
%define gccver 5.1.0
%define pythonver 2.7.10
Name: bcc
Version: 0.1.7
Release: 1%{?dist}
Summary: BPF Compiler Collection (BCC)
Group: Development/Languages
License: ASL 2.0
URL: https://github.com/iovisor/bcc
Source0: https://github.com/iovisor/bcc/archive/v%{version}.tar.gz
Source1: https://ftp.gnu.org/gnu/gcc/gcc-%{gccver}/gcc-%{gccver}.tar.gz
Source2: https://www.python.org/ftp/python/%{pythonver}/Python-%{pythonver}.tgz
Source3: http://llvm.org/releases/3.7.0/llvm-%{llvmver}.src.tar.xz
Source4: http://llvm.org/releases/3.7.0/cfe-%{llvmver}.src.tar.xz
BuildArch: x86_64
BuildRequires: bison, bzip2, cmake >= 2.8.7, file, flex, gcc, gcc-c++, git, glibc-devel, glibc-utils, python2-devel, rpm-build, svn, tar, texinfo-tex, wget, zip, zlib-devel
%description
Python bindings for BPF Compiler Collection (BCC). Control a BPF program
from userspace.
%prep
%setup -T -b 1 -n gcc-%{gccver}
%setup -T -D -b 2 -n Python-%{pythonver}
%setup -T -D -b 3 -n llvm-%{llvmver}.src
mkdir tools/clang
tar -xvvJf %{_sourcedir}/cfe-%{llvmver}.src.tar.xz -C tools/clang --strip 1
%setup -D -n bcc-%{version}
%build
export LD_LIBRARY_PATH="%{_builddir}/usr/lib64"
export PATH="%{_builddir}/usr/bin":$PATH
# build gcc to bootstrap llvm build
pushd %{_builddir}/gcc-%{gccver}
./contrib/download_prerequisites
mkdir build
cd build
../configure --disable-multilib --prefix="%{_builddir}/usr"
make -j`grep -c ^process /proc/cpuinfo`
make install
popd
echo "%{_builddir}/usr/lib64" > /etc/ld.so.conf.d/usrLocalLib64.conf
ldconfig
# build newer python for llvm
pushd %{_builddir}/Python-%{pythonver}
./configure --prefix="%{_builddir}/usr"
make -j`grep -c ^process /proc/cpuinfo`
make install
popd
# build llvm with local gcc
pushd %{_builddir}/llvm-%{llvmver}.src
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX="%{_builddir}/usr" -DCMAKE_C_COMPILER="%{_builddir}/usr/bin/gcc" -DCMAKE_CXX_COMPILER="%{_builddir}/usr/bin/g++" -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="X86;BPF"
make -j`grep -c ^process /proc/cpuinfo`
make install
popd
rm /etc/ld.so.conf.d/usrLocalLib64.conf
ldconfig
mkdir build
cd build
cmake .. -DREVISION=%{version} -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_C_COMPILER="%{_builddir}/usr/bin/gcc" -DCMAKE_CXX_COMPILER="%{_builddir}/usr/bin/g++"
make -j`grep -c ^process /proc/cpuinfo`
%install
cd build
make install/strip DESTDIR=%{buildroot}
%changelog
* Fri Jul 03 2015 Brenden Blanco <bblanco@plumgrid.com> - 0.1.1-2
- Initial RPM Release
%package -n libbcc
Summary: Shared Library for BPF Compiler Collection (BCC)
%description -n libbcc
Shared Library for BPF Compiler Collection (BCC)
%package -n libbcc-examples
Summary: Examples for BPF Compiler Collection (BCC)
%description -n libbcc-examples
Examples for BPF Compiler Collection (BCC)
%package -n python-bcc
Summary: Python bindings for BPF Compiler Collection (BCC)
%description -n python-bcc
Python bindings for BPF Compiler Collection (BCC)
%files -n python-bcc
%{python_sitelib}/bcc*
%exclude %{python_sitelib}/*.egg-info
%files -n libbcc
/usr/lib64/*
/usr/include/bcc/*
%files -n libbcc-examples
/usr/share/bcc/examples/*
# Copyright (c) PLUMgrid, Inc.
# Licensed under the Apache License, Version 2.0 (the "License")
%define debug_package %{nil}
%define llvmver 3.7.0
%define gccver 5.1.0
%define pythonver 2.7.10
Name: bcc
Version: @REVISION_LAST@
Release: 1%{?dist}
Summary: BPF Compiler Collection (BCC)
Group: Development/Languages
License: ASL 2.0
URL: https://github.com/iovisor/bcc
Source0: https://github.com/iovisor/bcc/archive/v%{version}.tar.gz
Source1: https://ftp.gnu.org/gnu/gcc/gcc-%{gccver}/gcc-%{gccver}.tar.gz
Source2: https://www.python.org/ftp/python/%{pythonver}/Python-%{pythonver}.tgz
Source3: http://llvm.org/releases/3.7.0/llvm-%{llvmver}.src.tar.xz
Source4: http://llvm.org/releases/3.7.0/cfe-%{llvmver}.src.tar.xz
BuildArch: x86_64
BuildRequires: bison, bzip2, cmake >= 2.8.7, file, flex, gcc, gcc-c++, git, glibc-devel, glibc-utils, python2-devel, rpm-build, svn, tar, texinfo-tex, wget, zip, zlib-devel
%description
Python bindings for BPF Compiler Collection (BCC). Control a BPF program
from userspace.
%prep
%setup -T -b 1 -n gcc-%{gccver}
%setup -T -D -b 2 -n Python-%{pythonver}
%setup -T -D -b 3 -n llvm-%{llvmver}.src
mkdir tools/clang
tar -xvvJf %{_sourcedir}/cfe-%{llvmver}.src.tar.xz -C tools/clang --strip 1
%setup -D -n bcc-%{version}
%build
export LD_LIBRARY_PATH="%{_builddir}/usr/lib64"
export PATH="%{_builddir}/usr/bin":$PATH
# build gcc to bootstrap llvm build
pushd %{_builddir}/gcc-%{gccver}
./contrib/download_prerequisites
mkdir build
cd build
../configure --disable-multilib --prefix="%{_builddir}/usr"
make -j`grep -c ^process /proc/cpuinfo`
make install
popd
echo "%{_builddir}/usr/lib64" > /etc/ld.so.conf.d/usrLocalLib64.conf
ldconfig
# build newer python for llvm
pushd %{_builddir}/Python-%{pythonver}
./configure --prefix="%{_builddir}/usr"
make -j`grep -c ^process /proc/cpuinfo`
make install
popd
# build llvm with local gcc
pushd %{_builddir}/llvm-%{llvmver}.src
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX="%{_builddir}/usr" -DCMAKE_C_COMPILER="%{_builddir}/usr/bin/gcc" -DCMAKE_CXX_COMPILER="%{_builddir}/usr/bin/g++" -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="X86;BPF"
make -j`grep -c ^process /proc/cpuinfo`
make install
popd
rm /etc/ld.so.conf.d/usrLocalLib64.conf
ldconfig
mkdir build
cd build
cmake .. -DREVISION=%{version} -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_C_COMPILER="%{_builddir}/usr/bin/gcc" -DCMAKE_CXX_COMPILER="%{_builddir}/usr/bin/g++"
make -j`grep -c ^process /proc/cpuinfo`
%install
cd build
make install/strip DESTDIR=%{buildroot}
%changelog
* Fri Jul 03 2015 Brenden Blanco <bblanco@plumgrid.com> - 0.1.1-2
- Initial RPM Release
%package -n libbcc
Summary: Shared Library for BPF Compiler Collection (BCC)
%description -n libbcc
Shared Library for BPF Compiler Collection (BCC)
%package -n libbcc-examples
Summary: Examples for BPF Compiler Collection (BCC)
%description -n libbcc-examples
Examples for BPF Compiler Collection (BCC)
%package -n python-bcc
Summary: Python bindings for BPF Compiler Collection (BCC)
%description -n python-bcc
Python bindings for BPF Compiler Collection (BCC)
%files -n python-bcc
%{python_sitelib}/bcc*
%exclude %{python_sitelib}/*.egg-info
%files -n libbcc
/usr/lib64/*
/usr/include/bcc/*
%files -n libbcc-examples
/usr/share/bcc/examples/*
%define debug_package %{nil}
%define llvmver 3.7.0
Name: bcc
Version: @REVISION_LAST@
Release: 1%{?dist}
Summary: BPF Compiler Collection (BCC)
Group: Development/Languages
License: ASL 2.0
URL: https://github.com/iovisor/bcc
Source0: https://github.com/iovisor/bcc/archive/v%{version}.tar.gz
Source1: http://llvm.org/releases/3.7.0/llvm-%{llvmver}.src.tar.xz
Source2: http://llvm.org/releases/3.7.0/cfe-%{llvmver}.src.tar.xz
BuildArch: x86_64
BuildRequires: bison, cmake >= 2.8.7, flex, gcc, gcc-c++, python2-devel
%description
Python bindings for BPF Compiler Collection (BCC). Control a BPF program from
userspace.
%prep
%setup -T -b 1 -n llvm-%{llvmver}.src
mkdir tools/clang
tar -xvvJf %{_sourcedir}/cfe-%{llvmver}.src.tar.xz -C tools/clang --strip 1
%setup -D -n bcc-%{version}
%build
export LD_LIBRARY_PATH="%{_builddir}/usr/lib64"
export PATH="%{_builddir}/usr/bin":$PATH
# build llvm
pushd %{_builddir}/llvm-%{llvmver}.src
mkdir build
cd build
../configure --disable-assertions --enable-optimized --prefix="%{_builddir}/usr"
make -j`grep -c ^process /proc/cpuinfo`
make install
popd
mkdir build
pushd build
cmake .. -DREVISION=%{version} -DCMAKE_INSTALL_PREFIX=/usr
make -j`grep -c ^process /proc/cpuinfo`
popd
%install
pushd build
make install/strip DESTDIR=%{buildroot}
%changelog
* Fri Jul 03 2015 Brenden Blanco <bblanco@plumgrid.com> - 0.1.1-2
- Initial RPM Release
%package -n libbcc
Summary: Shared Library for BPF Compiler Collection (BCC)
%description -n libbcc
Shared Library for BPF Compiler Collection (BCC)
%package -n libbcc-examples
Summary: Examples for BPF Compiler Collection (BCC)
%description -n libbcc-examples
Examples for BPF Compiler Collection (BCC)
%package -n python-bcc
Summary: Python bindings for BPF Compiler Collection (BCC)
%description -n python-bcc
Python bindings for BPF Compiler Collection (BCC)
%files -n python-bcc
%{python_sitelib}/bcc*
%exclude %{python_sitelib}/*.egg-info
%files -n libbcc
/usr/lib64/*
/usr/include/bcc/*
%files -n libbcc-examples
/usr/share/bcc/examples/*
%define debug_package %{nil}
%define llvmver 3.7.0
Name: bcc
Version: 0.1.7
Release: 1%{?dist}
Summary: BPF Compiler Collection (BCC)
Group: Development/Languages
License: ASL 2.0
URL: https://github.com/iovisor/bcc
Source0: https://github.com/iovisor/bcc/archive/v%{version}.tar.gz
Source1: http://llvm.org/releases/3.7.0/llvm-%{llvmver}.src.tar.xz
Source2: http://llvm.org/releases/3.7.0/cfe-%{llvmver}.src.tar.xz
BuildArch: x86_64
BuildRequires: bison, cmake >= 2.8.7, flex, gcc, gcc-c++, python2-devel
%description
Python bindings for BPF Compiler Collection (BCC). Control a BPF program from
userspace.
%prep
%setup -T -b 1 -n llvm-%{llvmver}.src
mkdir tools/clang
tar -xvvJf %{_sourcedir}/cfe-%{llvmver}.src.tar.xz -C tools/clang --strip 1
%setup -D -n bcc-%{version}
%build
export LD_LIBRARY_PATH="%{_builddir}/usr/lib64"
export PATH="%{_builddir}/usr/bin":$PATH
# build llvm
pushd %{_builddir}/llvm-%{llvmver}.src
mkdir build
cd build
../configure --disable-assertions --enable-optimized --prefix="%{_builddir}/usr"
make -j`grep -c ^process /proc/cpuinfo`
make install
popd
mkdir build
pushd build
cmake .. -DREVISION=%{version} -DCMAKE_INSTALL_PREFIX=/usr
make -j`grep -c ^process /proc/cpuinfo`
popd
%install
pushd build
make install/strip DESTDIR=%{buildroot}
%changelog
* Fri Jul 03 2015 Brenden Blanco <bblanco@plumgrid.com> - 0.1.1-2
- Initial RPM Release
%package -n libbcc
Summary: Shared Library for BPF Compiler Collection (BCC)
%description -n libbcc
Shared Library for BPF Compiler Collection (BCC)
%package -n libbcc-examples
Summary: Examples for BPF Compiler Collection (BCC)
%description -n libbcc-examples
Examples for BPF Compiler Collection (BCC)
%package -n python-bcc
Summary: Python bindings for BPF Compiler Collection (BCC)
%description -n python-bcc
Python bindings for BPF Compiler Collection (BCC)
%files -n python-bcc
%{python_sitelib}/bcc*
%exclude %{python_sitelib}/*.egg-info
%files -n libbcc
/usr/lib64/*
/usr/include/bcc/*
%files -n libbcc-examples
/usr/share/bcc/examples/*
%define debug_package %{nil}
%define llvmver 3.7.0
Name: bcc
Version: @REVISION_LAST@
Release: 1%{?dist}
Summary: BPF Compiler Collection (BCC)
Group: Development/Languages
License: ASL 2.0
URL: https://github.com/iovisor/bcc
Source0: https://github.com/iovisor/bcc/archive/v%{version}.tar.gz
Source1: http://llvm.org/releases/3.7.0/llvm-%{llvmver}.src.tar.xz
Source2: http://llvm.org/releases/3.7.0/cfe-%{llvmver}.src.tar.xz
BuildArch: x86_64
BuildRequires: bison, cmake >= 2.8.7, flex, gcc, gcc-c++, python2-devel
%description
Python bindings for BPF Compiler Collection (BCC). Control a BPF program from
userspace.
%prep
%setup -T -b 1 -n llvm-%{llvmver}.src
mkdir tools/clang
tar -xvvJf %{_sourcedir}/cfe-%{llvmver}.src.tar.xz -C tools/clang --strip 1
%setup -D -n bcc-%{version}
%build
export LD_LIBRARY_PATH="%{_builddir}/usr/lib64"
export PATH="%{_builddir}/usr/bin":$PATH
# build llvm
pushd %{_builddir}/llvm-%{llvmver}.src
mkdir build
cd build
../configure --disable-assertions --enable-optimized --prefix="%{_builddir}/usr"
make -j`grep -c ^process /proc/cpuinfo`
make install
popd
mkdir build
pushd build
cmake .. -DREVISION=%{version} -DCMAKE_INSTALL_PREFIX=/usr
make -j`grep -c ^process /proc/cpuinfo`
popd
%install
pushd build
make install/strip DESTDIR=%{buildroot}
%changelog
* Fri Jul 03 2015 Brenden Blanco <bblanco@plumgrid.com> - 0.1.1-2
- Initial RPM Release
%package -n libbcc
Summary: Shared Library for BPF Compiler Collection (BCC)
%description -n libbcc
Shared Library for BPF Compiler Collection (BCC)
%package -n libbcc-examples
Summary: Examples for BPF Compiler Collection (BCC)
%description -n libbcc-examples
Examples for BPF Compiler Collection (BCC)
%package -n python-bcc
Summary: Python bindings for BPF Compiler Collection (BCC)
%description -n python-bcc
Python bindings for BPF Compiler Collection (BCC)
%files -n python-bcc
%{python_sitelib}/bcc*
%exclude %{python_sitelib}/*.egg-info
%files -n libbcc
/usr/lib64/*
/usr/include/bcc/*
%files -n libbcc-examples
/usr/share/bcc/examples/*
%define debug_package %{nil} %define debug_package %{nil}
Name: bcc Name: bcc
Version: 0.1.7 Version: @REVISION@
Release: 1%{?dist} Release: @GIT_REV_COUNT@
Summary: BPF Compiler Collection (BCC) Summary: BPF Compiler Collection (BCC)
Group: Development/Languages Group: Development/Languages
...@@ -26,7 +26,7 @@ userspace. ...@@ -26,7 +26,7 @@ userspace.
mkdir build mkdir build
pushd build pushd build
cmake .. -DREVISION_LAST=%{version} -DREVISION=%{version} -DCMAKE_INSTALL_PREFIX=/usr cmake .. -DREVISION_LAST=%{version} -DREVISION=%{version} -DCMAKE_INSTALL_PREFIX=/usr
make -j`grep -c ^process /proc/cpuinfo` make %{?_smp_mflags}
popd popd
%install %install
......
#!/bin/bash
set -x
set -e
TMP=$(mktemp -d /tmp/rpmbuild.XXXXXX)
function cleanup() {
[[ -d $TMP ]] && rm -rf $TMP
}
trap cleanup EXIT
mkdir $TMP/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
llvmver=3.7.1
# only the most recent tag
git_tag_latest=$(git describe --abbrev=0)
git_rev_count=$(git rev-list $git_tag_latest.. --count)
release=0
if [[ "$git_rev_count" != "0" ]]; then
release=$(git log --pretty='g%h' -n 1)
fi
revision=${git_tag_latest:1}
git archive HEAD --prefix=bcc/ --format=tar.gz -o $TMP/SOURCES/$git_tag_latest.tar.gz
wget -P $TMP/SOURCES http://llvm.org/releases/$llvmver/{cfe,llvm}-$llvmver.src.tar.xz
sed \
-e "s/^\(Version:\s*\)@REVISION@/\1$revision/" \
-e "s/^\(Release:\s*\)@GIT_REV_COUNT@/\1$release/" \
SPECS/bcc+clang.spec > $TMP/SPECS/bcc.spec
pushd $TMP
rpmbuild --define "_topdir `pwd`" -ba SPECS/bcc.spec
popd
cp $TMP/RPMS/*/*.rpm .
cp $TMP/SRPMS/*.rpm .
...@@ -11,8 +11,24 @@ function cleanup() { ...@@ -11,8 +11,24 @@ function cleanup() {
trap cleanup EXIT trap cleanup EXIT
mkdir $TMP/{BUILD,RPMS,SOURCES,SPECS,SRPMS} mkdir $TMP/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
llvmver=3.7.1
# only the most recent tag
git_tag_latest=$(git describe --abbrev=0)
git_rev_count=$(git rev-list $git_tag_latest.. --count)
release=0
if [[ "$git_rev_count" != "0" ]]; then
release=$(git log --pretty='g%h' -n 1)
fi
revision=${git_tag_latest:1}
git archive HEAD --prefix=bcc/ --format=tar.gz -o $TMP/SOURCES/bcc.tar.gz git archive HEAD --prefix=bcc/ --format=tar.gz -o $TMP/SOURCES/bcc.tar.gz
cp SPECS/bcc.spec $TMP/SPECS/
sed \
-e "s/^\(Version:\s*\)@REVISION@/\1$revision/" \
-e "s/^\(Release:\s*\)@GIT_REV_COUNT@/\1$release/" \
SPECS/bcc.spec > $TMP/SPECS/bcc.spec
pushd $TMP pushd $TMP
rpmbuild --define "_topdir `pwd`" -ba SPECS/bcc.spec rpmbuild --define "_topdir `pwd`" -ba SPECS/bcc.spec
popd popd
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment