1. RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016
Julien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien Pivotto
Inuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTT
February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016
3. Native packagesNative packagesNative packagesNative packagesNative packagesNative packagesNative packagesNative packagesNative packagesNative packagesNative packagesNative packagesNative packagesNative packagesNative packagesNative packagesNative packages
• RRRRRRRRRRRRRRRRReally? It is still needed?
• PPPPPPPPPPPPPPPPPypi/Rubygems/npm/pear…
• OOOOOOOOOOOOOOOOOmnibus/FPM/…
4. No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .
5. It is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easy
gem install fpm
ERROR: Could not find a valid gem `fpm'
(>= 0), here is why:
Unable to download data from https://
rubygems.org/ − Errno::ECONNREFUSED:
Connection refused − connect(2) for "
api.rubygems.org" port 443 (https://api
.rubygems.org/latest_specs.4.8.gz)
6. I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)
• /////////////////usr/bin/fpm
• ./vendor/bin/fpm
• /////////////////usr/local/bin/fpm
• ~~~~~~~~~~~~~~~~~/.ruby/2.4/gems/rubygems/fpm/bin/fpm
7. Now I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prod
• DDDDDDDDDDDDDDDDDev: version 1.1
• UUUUUUUUUUUUUUUUUAT (deployed next day): 1.2
• PPPPPPPPPPPPPPPPProd (a week after): 2.0. broken.
8. Open questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questions
• WWWWWWWWWWWWWWWWWhat is installed?
• WWWWWWWWWWWWWWWWWhere does the file come from?
• CCCCCCCCCCCCCCCCCompilation at install time?
10. How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011
• hhhhhhhhhhhhhhhhhttps://github.com/roidelapluie/vagrant-
build-mapnik
• /////////////////usr/bin/wget -O /tmp/mapnik.tar.bz2
https://github.com/mapnik-2.0.0.tar.bz2
• /////////////////usr/bin/screen -d -m
/usr/local/bin/build_mapnik.sh
• AAAAAAAAAAAAAAAAAll of that in puppet manifests
11. I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…
After vagrant provision , wait until the
compilation is done.
You can see the compilations process:
vagrant ssh
sudo screen −r
The packages will be located in the "rpms"
folder.
12. Building in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VM
cd /opt/mapnik −2.0.0
python scons/scons.py configure PREFIX=${
target} PYTHON_PREFIX=${target}
python scons/scons.py
python scons/scons.py install
13. FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…
fpm −s dir −n mapnik −v 2.0.0 −−iteration "${
start_date}"
−C "${target}" −t rpm −−prefix /usr −−url
http://mapnik.org/
−−description "Mapnik is a Free Toolkit for
developing mapping applications."
−−exclude include
14. Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…
fpm −s dir −n mapnik−devel −v 2.0.0 −−
iteration "${start_date}"
−C "${target}/include" −t rpm −−prefix /usr/
include −−url http://mapnik.org/
−−description "The mapnik−devel package
contains header files for developing
programs using the Mapnik library."
−−depends "mapnik = 2.0.0"
15. How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014
• hhhhhhhhhhhhhhhhhttps://github.com/roidelapluie/collectd-
rpm
• SSSSSSSSSSSSSSSSSpec file in collectd upstream
• wwwwwwwwwwwwwwwwwget sources
• iiiiiiiiiiiiiiiiinstall build deps
• rrrrrrrrrrrrrrrrrpmbuild -bb
17. And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?
25. Docker runDocker runDocker runDocker runDocker runDocker runDocker runDocker runDocker runDocker runDocker runDocker runDocker runDocker runDocker runDocker runDocker run
docker run −e XUID="$(id −u)" −−rm −ti −v $PWD
:/work −w /work el7−build ./el7−build.sh
• ------------------rm: do not fill my disk
• -----------------t: allocate a tty
• -----------------i: interactive
• -----------------v $PWD:/work mount current dir on host to
/work in container
• -----------------w /work: use /work as working dir
36. copr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and travis
travis encrypt−file copr−config −−add
echo copr−config > .gitignore
37. copr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and travis
sudo: required
services:
− docker
script:
− make
before_install:
− openssl aes−256−cbc −K
$encrypted_2ec4d63b6867_key −iv
$encrypted_2ec4d63b6867_iv
−in copr−config.enc −out copr−config −d