1# -*- mode: ruby -*- 2# vi: set ft=ruby : 3 4# 5# original script by maximilian.huber@tngtech.com 6# additions by bruno.cornec@hpe.com michael.c.jaeger@siemens.com 7# 8# SPDX-License-Identifier: GPL-2.0 9# 10# this script starts a VM in order to run project builder inside 11# for development and debugging 12# 13 14# 15# std vagrant setup 16# 17Vagrant.configure("2") do |config| 18 config.vm.box = "centos/7" 19 20 config.vm.provider "virtualbox" do |vbox| 21 vbox.customize ["modifyvm", :id, "--memory", "3072"] 22 vbox.customize ["modifyvm", :id, "--cpus", "2"] 23 end 24 25 config.vm.synced_folder "..", "/home/vagrant/prj/fossology", type: "rsync" 26 config.vm.synced_folder "../target", "/home/vagrant/repo", type: "rsync", create: true 27 config.vm.network "forwarded_port", guest: 80, host: 8082 28 29# 30# part to prepare dependencies 31# 32 config.vm.provision "shell" do |s| 33 s.inline = <<SCRIPT 34set -ex 35 36yum install -y wget git 37 38# install EPEL 39wget https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm 40rpm -Uvh epel-release-7-11.noarch.rpm 41 42# install projectbuilder 43wget http://ftp.project-builder.org/test/centos/7/x86_64/pb-test.repo 44cp pb-test.repo /etc/yum.repos.d/ 45 46# not using gpg checking is not recommended 47# yum update -y --nogpgcheck 48# yum install -y project-builder --nogpgcheck 49yum update -y 50 51# installs for projectbuilder 52yum install -y project-builder subversion perl-ExtUtils-MakeMaker createrepo 53 54# Fix a Fedora-26 issue 55cat >> /etc/pb/pb.conf << EOF 56osupd fedora-26 = sudo /usr/bin/dnf makecache; sudo /usr/bin/dnf -y update 57EOF 58 59# adding docker install info for prepping the project builder installation runs 60cat > /etc/yum.repos.d/docker.repo << EOF 61[dockerrepo] 62name=Docker Repository 63baseurl=https://yum.dockerproject.org/repo/main/centos/7 64enabled=1 65gpgcheck=1 66gpgkey=https://yum.dockerproject.org/gpg 67EOF 68 69# ... then installing docker 70yum install -y docker-engine 71 72# some modification of docker settings to run under user vagrant 73sed -i 's/dockerd$/dockerd -G vagrant/' /usr/lib/systemd/system/docker.service 74systemctl daemon-reload 75 76# ... starting docker 77systemctl start docker 78 79# ... installing composer things 80# cd /home/vagrant/prj/fossology 81mkdir -p /home/vagrant/composer/ 82/home/vagrant/prj/fossology/utils/install_composer.sh /home/vagrant/composer/ 83mkdir -p /home/vagrant/prj/fossology/src/vendor 84chown vagrant:vagrant /home/vagrant/prj/fossology/src/vendor 85 86# preparing the transfer of the packages by ssh 87ssh-keygen -t rsa -N "" -q -f /home/vagrant/.ssh/id_rsa 88chown vagrant:vagrant /home/vagrant/.ssh/id_rsa 89chown vagrant:vagrant /home/vagrant/.ssh/id_rsa.pub 90cat /home/vagrant/.ssh/id_rsa.pub >> /home/vagrant/.ssh/authorized_keys 91chmod 600 /home/vagrant/.ssh/authorized_keys 92mkdir -p /home/vagrant/repo 93chown vagrant:vagrant /home/vagrant/repo 94 95SCRIPT 96 end 97 98# 99# checking out and preparing project builder 100# note that triple backslashes are because of cat and vagrant escaping 101# 102 config.vm.provision "shell" do |s| 103 s.privileged = false 104 s.inline = <<SCRIPT 105sudo chown vagrant:vagrant ~/prj 106git config --global user.email "you@example.com" 107git config --global user.name "Your Name" 108 109set -ex 110 111################################################################################ 112# configure pb 113cat<<PBRC > $HOME/.pbrc 114 115pbdefdir default = \\\$ENV{HOME}/cache-project-builder 116pbstoponerr default = true 117 118# you need to swith depending on how you checked out fossology.git 119pburl fossology = git+ssh://git@github.com:fossology/fossology.git 120#pburl fossology = git+https://github.com/fossology/fossology.git 121pbconfurl fossology = git+ssh://git@github.com:fossology/fossology.git 122#pbconfurl fossology = git+https://github.com/fossology/fossology.git 123 124pbdefdir fossology = \\\$ENV{'HOME'}/prj 125pbconfdir fossology = \\\$ENV{'HOME'}/prj/fossology/pbconf 126 127pburl pb = svn://svn.project-builder.org/pb 128pbdefdir pb = \\\$ENV{'HOME'} 129pbconfurl pb = svn://svn.project-builder.org/pb/pbconf 130pbconfdir pb = \\\$ENV{'HOME'}/pb/pbconf 131 132sshhost fossology = localhost 133sshlogin fossology = vagrant 134sshdir fossology = /home/vagrant/repo 135sshport fossology = 22 136 137PBRC 138 139################################################################################ 140# docker based generation here 141 142# maybe not all of the distros are relevant 143# DISTRO_LIST="ubuntu-16.04-x86_64 ubuntu-16.10-x86_64 ubuntu-17.04-x86_64 debian-8-x86_64 debian-9-x86_64 fedora-25-x86_64 fedora-26-x86_64 centos-6-x86_64 centos-7-x86_64 mageia-6-x86_64 opensuse-42.2-x86_64 opensuse-42.3-x86_64" 144DISTRO_LIST="centos-7-x86_64" 145 146# some logic for command line ops here 147#DISTRO=$1 148#DISTROVER=$2 149#if [ "_$DISTRO" != "_" ]; then 150#DISTRO_LIST=$DISTRO-$DISTROVER-x86_64 151#fi 152 153VELIST=`echo $DISTRO_LIST | sed 's/ /,/g'` 154 155# note that velist and vepath should be set to default , not only project builder ('pb') 156cat >> $HOME/.pbrc << EOF 157velist default = $VELIST 158velogin default = pb 159vepath default = /tmp 160vetype default = docker 161dockerrepository default = pb 162EOF 163 164# Setup repos 165pb -p pb -r 0.14.6 sbx2pkg2ins 166# useless, instead use sbx2prepve 167pb -p fossology sbx2build 168 169# the grand for loop for the different distros 170for DISTRO in $DISTRO_LIST; do 171NAME=`pbdistrocheck $DISTRO | grep -E '^Name:' | awk '{print $2}'` 172VER=`pbdistrocheck $DISTRO | grep -E '^Ver:' | awk '{print $2}'` 173ARCH=`pbdistrocheck $DISTRO | grep -E '^Arch:' | awk '{print $2}'` 174pb -p pb -m $DISTRO newve -i ${NAME}:$VER 175pb -p pb -m $DISTRO sbx2setupve 176pb -p fossology -m $DISTRO prepve 177pb -p fossology -m $DISTRO build2ve 178done 179 180################################################################################ 181#sbx = sandbox 182 183# git checkout could be done here if need for overwrite is needed ... 184 185# Give the ref to where composer is on the VM 186# adding componser binary to path 187 188export PATH=/home/vagrant/composer/:$PATH 189 190# and provide the variable to the make file 191#export COMPOSER_PHAR=/home/vagrant/composer/composer 192 193# commands for single distro generation 194#pb -t -p fossology sbx2build fossology 195#pb -p fossology build2prep fossology 196 197# actually, sbx2pkg is included in sbx2pkg2ins 198#pb -t -p fossology sbx2pkg fossology 199#pb -t -p fossology sbx2pkg2ins fossology 200 201SCRIPT 202 end 203 204# 205# applying some work around for selinux 206# 207 config.vm.provision "shell" do |s| 208 s.privileged = false 209 s.inline = <<SCRIPT 210# todo disabling SELinux only at first start is needed but should be put in policies 211# remove if the https://github.com/fossology/fossology/issues/727 212sudo setenforce 0 213 214SCRIPT 215 end 216 217end 218