• M
    Package generation for Ubuntu and CentOS · ee1f3ccb
    mike@arpaia.co 提交于
    Summary:
    I put together a script to assist in the generation of deb's and
    rpm's. I've tested that this works on ubuntu via vagrant. I've included the
    Vagrantfile here, but I can remove it if it's not useful. The package.sh
    script should work on any ubuntu or centos machine, I just added a bit of
    logic in there to allow a base Ubuntu or Centos machine to be able to build
    RocksDB from scratch.
    
    Example output on Ubuntu 14.04:
    
    ```
    root@vagrant-ubuntu-trusty-64:/vagrant# ./tools/package.sh
    [+] g++-4.7 is already installed. skipping.
    [+] libgflags-dev is already installed. skipping.
    [+] ruby-all-dev is already installed. skipping.
    [+] fpm is already installed. skipping.
    Created package {:path=>"rocksdb_3.5_amd64.deb"}
    root@vagrant-ubuntu-trusty-64:/vagrant# dpkg --info rocksdb_3.5_amd64.deb
     new debian package, version 2.0.
     size 17392022 bytes: control archive=1518 bytes.
         275 bytes,    11 lines      control
        2911 bytes,    38 lines      md5sums
     Package: rocksdb
     Version: 3.5
     License: BSD
     Vendor: Facebook
     Architecture: amd64
     Maintainer: rocksdb@fb.com
     Installed-Size: 83358
     Section: default
     Priority: extra
     Homepage: http://rocksdb.org/
     Description: RocksDB is an embeddable persistent key-value store for fast storage.
     ```
    
     Example output on CentOS 6.5:
    
     ```
     [root@localhost vagrant]# rpm -qip rocksdb-3.5-1.x86_64.rpm
     Name        : rocksdb                      Relocations: /usr
     Version     : 3.5                               Vendor: Facebook
     Release     : 1                             Build Date: Mon 29 Sep 2014 01:26:11 AM UTC
     Install Date: (not installed)               Build Host: localhost
     Group       : default                       Source RPM: rocksdb-3.5-1.src.rpm
     Size        : 96231106                         License: BSD
     Signature   : (none)
     Packager    : rocksdb@fb.com
     URL         : http://rocksdb.org/
     Summary     : RocksDB is an embeddable persistent key-value store for fast storage.
     Description :
     RocksDB is an embeddable persistent key-value store for fast storage.
     ```
    
    Test Plan:
    How this gets used is really up to the RocksDB core team. If you
    want to actually get this into mainline, you might have to change `make
    install` such that it install the RocksDB shared object file as well, which
    would require you to link against gflags (maybe?) and that would require some
    potential modifications to the script here (basically add a depends on that
    package).
    
    Currently, this will install the headers and a pre-compiled statically linked
    object file. If that's what you want out of life, than this requires no
    modifications.
    
    Reviewers: ljin, yhchiang, igor
    
    Reviewed By: igor
    
    Differential Revision: https://reviews.facebook.net/D24141
    ee1f3ccb
Makefile 25.5 KB