Line 1: |
Line 1: |
| + | {{Level|Developer}} |
| ==Rpm Tools== | | ==Rpm Tools== |
| ===Introduction=== | | ===Introduction=== |
Line 4: |
Line 5: |
| In this howto we could let script-tools we need to build rpm | | In this howto we could let script-tools we need to build rpm |
| | | |
− | ===Build a srpm with mock=== | + | ===Unnilennium=== |
| + | [[User:Unnilennium|Jean-Philippe Pialasse]]<br/> |
| | | |
− | mock get a special syntax not always easy to recall, here a script that you need to record at /usr/bin/mockbuild (set it executable) | + | ====prepa==== |
| + | a script to update the cvs Tree and apply all patches |
| + | cvs update -dPA |
| + | make clean |
| + | make prep |
| + | |
| + | ====refresh==== |
| + | a script to refresh the whole cvs Tree of smecontribs |
| + | #!/bin/bash |
| + | |
| + | cd ~/smecontribs/rpms |
| + | cvs update -dPA |
| + | cd ~/smecontribs |
| + | cvs -z3 -d:ext:shell.koozali.org:/cvs/smecontribs co -P rpms |
| + | cd ~/smecontribs/rpms |
| + | |
| + | ====addSubTree==== |
| + | A script to add srpm in Buildsrv |
| + | |
| + | #!/bin/bash |
| + | |
| + | if [ ! -f "$1" ] |
| + | then |
| + | echo "srpm does not exists" |
| + | exit 99 |
| + | fi |
| + | |
| + | package=$1 |
| + | |
| + | pkgname=`echo $1|rev|cut -d"/" -f1|cut -d"-" -f3-|rev` |
| + | |
| + | VSME=${2:-'9'} |
| + | |
| + | echo "$pkgname/contribs$VSME" |
| + | |
| + | |
| + | #cd ~/smecontribs/rpms |
| + | #cvs update -dPA |
| + | #cd ~/smecontribs |
| + | #cvs -z3 -d:ext:shell.koozali.org:/cvs/smecontribs co -P rpms |
| + | #cd ~/smecontribs/rpms |
| + | |
| + | cd ~/smecontribs/rpms |
| + | |
| + | # contrib folder not found |
| + | if [ ! -d "$pkgname" ] |
| + | then |
| + | echo " ~/smecontribs/rpms/$pkgname not found" |
| + | exit 99 |
| + | fi |
| + | |
| + | |
| + | if [ ! -d "$pkgname/contribs$VSME" ] |
| + | then |
| + | echo " ~/smecontribs/rpms/$pkgname/contribs$VSME not found : new subtree to create" |
| + | mkdir -p $pkgname/contribs$VSME |
| + | touch $pkgname/contribs$VSME/.cvsignore |
| + | touch $pkgname/contribs$VSME/import.log |
| + | cvs add $pkgname |
| + | cvs add $pkgname/contribs$VSME |
| + | cvs add $pkgname/contribs$VSME/.cvsignore |
| + | cvs add $pkgname/contribs$VSME/import.log |
| + | cvs commit -m "Prep for $pkgname import" |
| + | |
| + | else |
| + | echo " ~/smecontribs/rpms/$pkgname/contribs$VSME found : just need to import new source rpm" |
| + | |
| + | fi |
| + | |
| + | |
| + | ./common/cvs-import.sh -b "contribs$VSME" -m "Initial import to v$VSME" "$package" |
| + | |
| + | echo " now first build ..." |
| + | cd ~/smecontribs/rpms/$pkgname/contribs$VSME |
| + | cvs update -dPA |
| + | make clean |
| + | make prep |
| + | make local |
| + | cvs commit -m "$pkgname first build" |
| + | make tag |
| + | make build |
| + | echo "now please fill a bug" |
| + | echo "http://bugs.contribs.org/enter_bug.cgi?product=SME%20Contribs&component=${pkgname}&version=${VSME}beta&short_desc=first%20import%20to%20sme$VSME%20tree%20[$pkgname]" |
| + | echo "http://bugs.contribs.org/enter_bug.cgi?product=SME%20Contribs&component=${pkgname}&version=${VSME}beta&short_desc=first%20import%20to%20sme$VSME%20tree%20[$pkgname]">>~/TODO |
| + | |
| + | ====listv9==== |
| + | List rpm version already online in the sme9contribs tree and build srpm from the folder ~/srpm which are not already online |
| + | |
| + | #!/bin/bash |
| + | |
| + | #liste contribs avec deja version v9 |
| + | #find ~/smecontribs/rpms/ -name 'contribs9' -printf '%h\n' | sort -u |grep "smeserver-"|cut -d"/" -f6>~/alreadyV9 |
| + | # liste �tant deja released |
| + | URL='http://mirror.contribs.org/releases/9/smecontribs/SRPMS/'; |
| + | curl $URL 2>&1 | grep -o -E 'href="(.+)"' | cut -d'"' -f2|grep -E '^smeserver-'|rev| cut -d"-" -f3-|rev >~/lscontribs9 |
| + | home=~ |
| + | echo $home |
| + | ls ~/srpm |grep "src.rpm"|sed "s|.*|$home/srpm/&|"> ~/listsrpm |
| + | |
| + | #listes juste import�e ou smedev |
| + | comm -23 <(sort ~/lscontribs9) <(sort ~/alreadyV9) |
| + | |
| + | while read fichier ; do |
| + | |
| + | tmp=`echo $fichier|rev|cut -d"/" -f1| cut -d"-" -f3-|rev` |
| + | #echo $fichier |
| + | #echo $tmp |
| + | if grep -Fxq "^$tmp$" ~/alreadyV9 |
| + | then |
| + | echo " $tmp : already there " # code if found |
| + | echo " $tmp : already there " >>~/TODO |
| + | else |
| + | echo "$tmp to import into v9" # code if not found |
| + | # import |
| + | echo "addSubTree $fichier 9 " |
| + | addSubTree $fichier 9 |
| + | echo "mv $fichier \"$home/done/\"" |
| + | mv $fichier "$home/srpm/done/" |
| + | sleep 10 |
| + | fi |
| + | |
| + | done < <(cat ~/listsrpm) |
| + | |
| + | ===Stephdl=== |
| + | [mailto:stephdl@de-labrusse.fr stephdl] Stéphane de Labrusse AKA [[User:stephdl|Stephdl]]<br /> |
| + | ====mockbuild==== |
| + | |
| + | mock get a special syntax not always easy to recall, here a script that you need to record at /usr/bin/mockbuild (set it executable) https://github.com/stephdl/mockbuild |
| | | |
| * mockbuild usage | | * mockbuild usage |
Line 14: |
Line 143: |
| smeserver-9-x86_64-base smeserver-9-i386-base | | smeserver-9-x86_64-base smeserver-9-i386-base |
| smeserver-8-x86_64-base smeserver-8-i386-base | | smeserver-8-x86_64-base smeserver-8-i386-base |
| + | epel-6-x86_64 epel-6-i386 |
| + | epel-5-x86_64 epel-5-i386 |
| | | |
− | #!/bin/bash | + | <nowiki>#!/bin/bash |
| # who i'm | | # who i'm |
| ME=$(whoami) | | ME=$(whoami) |
Line 26: |
Line 157: |
| echo " smeserver-9-x86_64-base smeserver-9-i386-base" | | echo " smeserver-9-x86_64-base smeserver-9-i386-base" |
| echo " smeserver-8-x86_64-base smeserver-8-i386-base" | | echo " smeserver-8-x86_64-base smeserver-8-i386-base" |
| + | echo " epel-6-x86_64 epel-6-i386 " |
| + | echo " epel-5-x86_64 epel-5-i386 " |
| echo " mockbuild package.src.rpm mock_configuration " | | echo " mockbuild package.src.rpm mock_configuration " |
| echo "################################################" | | echo "################################################" |
Line 44: |
Line 177: |
| echo "" | | echo "" |
| echo "3.Sign your rpms" | | echo "3.Sign your rpms" |
− | rpm --resign /home/$ME/exchange/$2/*.rpm 2>&1 > /dev/null | + | rpm --resign /home/$ME/exchange/$2/*.rpm 2>&1 > /dev/null</nowiki> |
| | | |
| A the end I use rpm to sign my rpm, if you don't need it you can remove it. | | A the end I use rpm to sign my rpm, if you don't need it you can remove it. |
| | | |
− | ===git_ignore=== | + | ====git_ignore==== |
− | git don't track empty directory that we may need for a rpm, here a script that you need to record at /usr/bin/git_ignore (set it executable) | + | git don't track empty directory that we may need for a rpm, here a script that you need to record at /usr/bin/git_ignore (set it executable) https://github.com/stephdl/git_ignore |
| | | |
| usage | | usage |
Line 58: |
Line 191: |
| find * -type d -empty -exec touch {}/.gitignore \; | | find * -type d -empty -exec touch {}/.gitignore \; |
| | | |
− | ===git_mockbuild=== | + | ====git_mockbuild==== |
| | | |
− | a git integration for mock, git and rpm | + | a git integration for mock, git and rpm https://github.com/stephdl/git_mockbuild |
| | | |
| you can record this script in /usr/bin | | you can record this script in /usr/bin |
Line 86: |
Line 219: |
| The result of build can be find in the 'exchange' folder of the user's home of that script | | The result of build can be find in the 'exchange' folder of the user's home of that script |
| | | |
− | usage | + | * usage<br /> |
| + | |
| in the git directory of your rpm (you need to install git & mock installed) | | in the git directory of your rpm (you need to install git & mock installed) |
| git_mockbuild | | git_mockbuild |
Line 114: |
Line 248: |
| # Find the centos version | | # Find the centos version |
| DIST=$2 | | DIST=$2 |
− | if [[ -z $DIST && "$BRANCH" =~ "sme9" ]]; then | + | <nowiki>if [[ -z $DIST && "$BRANCH" =~ "sme9" ]]; then</nowiki> |
| DIST="el6" | | DIST="el6" |
| elif [ -z $DIST ]; then | | elif [ -z $DIST ]; then |
Line 148: |
Line 282: |
| cp $TMPDIR/$PACKAGE-$VERSION.tar.gz ~/rpmbuild/SOURCES/$PACKAGE-$VERSION.tar.gz | | cp $TMPDIR/$PACKAGE-$VERSION.tar.gz ~/rpmbuild/SOURCES/$PACKAGE-$VERSION.tar.gz |
| cp $PACKAGE.spec ~/rpmbuild/SPECS/ | | cp $PACKAGE.spec ~/rpmbuild/SPECS/ |
| + | |
| + | ##copy a list of files to SOURCES when patches or archives are not in the root folder |
| + | ls > /tmp/$PACKAGE-$VERSION |
| + | cp -Rf $(</tmp/$PACKAGE-$VERSION) ~/rpmbuild/SOURCES/ |
| | | |
| # And build | | # And build |
Line 153: |
Line 291: |
| echo "0.Tips" | | echo "0.Tips" |
| echo "# git_mockbuild [ MOCKCONF ] [ SME_Server_version ]" | | echo "# git_mockbuild [ MOCKCONF ] [ SME_Server_version ]" |
− | echo 'you can choose another build architecture : git_mockbuild sme8-386 sme8-64 sme9-386 sme9-64' | + | echo 'you can choose another build architecture : git_mockbuild sme8-386 sme8-64 sme9-386 sme9-64 epel-6-x86_64 epel-6-i386 epel-5-x86_64 epel-5-i386' |
| echo 'you can choose which SME_Server target version you want : sme8 sme9' | | echo 'you can choose which SME_Server target version you want : sme8 sme9' |
| echo "" | | echo "" |
Line 196: |
Line 334: |
| elif [ $1 = "sme9-64" ]; then | | elif [ $1 = "sme9-64" ]; then |
| MOCKCONF="smeserver-9-x86_64-base" | | MOCKCONF="smeserver-9-x86_64-base" |
| + | elif [ $1 = "epel-6-x86_64" ]; then |
| + | MOCKCONF="epel-6-x86_64" |
| + | elif [ $1 = "epel-6-i386" ]; then |
| + | MOCKCONF="epel-6-i386" |
| + | elif [ $1 = "epel-5-x86_64" ]; then |
| + | MOCKCONF="epel-5-x86_64" |
| + | elif [ $1 = "epel-5-i386" ]; then |
| + | MOCKCONF="epel-5-i386" |
| fi; | | fi; |
| fi | | fi |
− |
| + | |
| echo "The mock chroot configuration used is $MOCKCONF" | | echo "The mock chroot configuration used is $MOCKCONF" |
| echo "==============================================================" | | echo "==============================================================" |
Line 207: |
Line 353: |
| | | |
| rm -f ~/rpmbuild/SPECS/$PACKAGE.spec ~/rpmbuild/SOURCES/$PACKAGE-$VERSION.tar.gz ~/rpmbuild/SRPMS/$PACKAGE-$VERSION*.src.rpm | | rm -f ~/rpmbuild/SPECS/$PACKAGE.spec ~/rpmbuild/SOURCES/$PACKAGE-$VERSION.tar.gz ~/rpmbuild/SRPMS/$PACKAGE-$VERSION*.src.rpm |
− | rm -rf $TMPDIR ~/$PACKAGE-$VERSION | + | rm -rf $TMPDIR ~/rpmbuild/SOURCES/$PACKAGE-$VERSION |
| + | |
| + | # clean ~/rpmbuild/SOURCES when patches or archives are not in the root folder |
| + | cd ~/rpmbuild/SOURCES/ |
| + | rm -rf $(</tmp/$PACKAGE-$VERSION) |
| + | #remove the file list |
| + | rm -rf /tmp/$PACKAGE-$VERSION |
| | | |
| # we give the path where are files | | # we give the path where are files |
Line 222: |
Line 374: |
| rpm --resign ~/exchange/$PACKAGE-$VERSION/*.rpm 2>&1 > /dev/null | | rpm --resign ~/exchange/$PACKAGE-$VERSION/*.rpm 2>&1 > /dev/null |
| | | |
− | ===contrib_migration=== | + | ====contrib_migration==== |
− | a script to migrate contrib from sme8 CVS to your local git and to your remote Github account for sme9 | + | a script to migrate contrib from sme8 CVS to your local git and to your remote Github account for sme9 https://github.com/stephdl/contrib_migration . You need to record at /usr/bin/contrib_migration (set it executable) |
| | | |
| simply call the script with the name of the cvs directory. Of course you have to install cvs and retrieve the source code in an anonymous or with a developer access | | simply call the script with the name of the cvs directory. Of course you have to install cvs and retrieve the source code in an anonymous or with a developer access |
| | | |
− | contrib_migration smeserver-wordpress | + | contrib_migration smeserver-wordpress |
| | | |
| If the directory is not existed in your git directory (~/git_work) in my server, then we launch the script. After that it creates automatically the new repository in github with your credentials (adjust 'stephdl' with your login account and replace 'xxxxxxxxxxxxxx' with your password) | | If the directory is not existed in your git directory (~/git_work) in my server, then we launch the script. After that it creates automatically the new repository in github with your credentials (adjust 'stephdl' with your login account and replace 'xxxxxxxxxxxxxx' with your password) |
| After that the script does several things | | After that the script does several things |
| | | |
− | *create the local git repository | + | :*create the local git repository |
− | *create the remote github account | + | :*create the remote github account |
− | * build all patches and remove them | + | :* build all patches and remove them |
− | * move all perl files to the correct new path | + | :* move all perl files to the correct new path |
− | * test if the new apache authentication is needed and where. | + | :* test if the new apache authentication is needed and where. |
− | * add a .git_ignore in empty folders (needed by git) | + | :* add a .git_ignore in empty folders (needed by git) |
− | * track all that stuff :) | + | :* track all that stuff :) |
| | | |
− | usage | + | * usage |
− | contrib_migration smeserver-packagename | + | you need to be outside of the cvs folder (eg in the 'rpms' folder) |
| + | contrib_migration smeserver-packagename |
| | | |
− | #test if the first argument is here | + | <nowiki>#test if the first argument is here |
| if [[ -z $1 ]]; then | | if [[ -z $1 ]]; then |
| echo "#################################################################################" | | echo "#################################################################################" |
Line 322: |
Line 475: |
| echo "think also if you have a github project called stephdl/$1" | | echo "think also if you have a github project called stephdl/$1" |
| echo "###################################" | | echo "###################################" |
| + | fi</nowiki> |
| + | |
| + | ====build_srpm==== |
| + | a script to build srpm, create the git repository, and export all files to github https://github.com/stephdl/build_srpm . You need to record at /usr/bin/build_srpm (set it executable) |
| + | |
| + | it creates automatically the new repository in github with your credentials (adjust 'stephdl' with your login account and replace 'xxxxxxxxxxxxxx' with your password) |
| + | |
| + | * usage |
| + | you must give arguments on the git branch (master, sme9 or anything else) and the package name : build_srpm package_name master |
| + | give the real name without number of version |
| + | build_srpm freedup sme9 |
| + | |
| + | ---- |
| + | <nowiki>###a bit of tests to see if we will not do a mess |
| + | if [[ -z $1 || -z $2 ]]; then |
| + | echo "################################################################################################################################" |
| + | echo "you must give arguments on the git branch (master, sme9 or anything else) and the package name : build_srpm package_name master" |
| + | echo "################################################################################################################################" |
| + | exit |
| + | fi |
| + | |
| + | if [[ -d ~/git_work/$1 && -d ~/git_work/$1-sdl ]]; then |
| + | echo"" |
| + | echo "###################################" |
| + | echo "the git directories ~/git_work/$1 and ~/git_work/$1-sdl are already created." |
| + | echo "please remove it before to play with the script" |
| + | echo "think also if you have a github project called stephdl/$1 and stephdl/$1-sdl" |
| + | echo "###################################" |
| + | exit |
| + | fi |
| + | # Create needed dirs on the build box |
| + | |
| + | mkdir -p ~/rpmbuild/{RPMS,SRPMS,SPECS,SOURCES,BUILD} |
| + | mkdir -p ~/exchange |
| + | |
| + | rpm -ivh $1*.src.rpm |
| + | cd ~/rpmbuild/SPECS |
| + | rpmbuild -bp --nodeps $1*.spec |
| + | |
| + | ##we remove all patch from the spec file |
| + | sed '/Patch/d' $1*.spec > $1.bis.spec |
| + | sed '/%patch/d' $1.bis.spec > $1.ter.spec |
| + | mv -f $1.ter.spec $1.spec |
| + | rm -f $1.bis.spec |
| + | |
| + | |
| + | ###test to see if the directory already exists in ~/git_work, if yes we use ~/git_work/package_name-sdl |
| + | if [[ ! -d ~/git_work/$1 ]]; then |
| + | |
| + | gitexist=0 |
| + | mkdir -p ~/git_work/$1 |
| + | NameGitHub=$1 |
| + | curl -u 'stephdl:xxxxxxxxxx' https://api.github.com/user/repos -d '{"name": "'"$NameGitHub"'" , "description": "A RPM for SME Server", "homepage": "http://wiki.contribs.org", "private": false, "has_issues": true, "has_wiki": true, "has_downloads": true}' |
| + | |
| + | cp -R ~/rpmbuild/BUILD/$1*/* ~/git_work/$1 |
| + | cp ~/rpmbuild/SPECS/$1.spec ~/git_work/$1 |
| + | cd ~/git_work/$1 |
| + | |
| + | |
| + | elif [[ -d ~/git_work/$1 ]]; then |
| + | |
| + | gitexist=1 |
| + | mkdir -p ~/git_work/$1-sdl |
| + | NameGitHub=$1-sdl |
| + | curl -u 'stephdl:xxxxxxxxx' https://api.github.com/user/repos -d '{"name": "'"$NameGitHub"'" , "description": "A RPM for SME Server", "homepage": "http://wiki.contribs.org", "private": false, "has_issues": true, "has_wiki": true, "has_downloads": true}' |
| + | |
| + | cp -R ~/rpmbuild/BUILD/$1*/* ~/git_work/$1-sdl |
| + | cp ~/rpmbuild/SPECS/$1.spec ~/git_work/$1-sdl |
| + | cd ~/git_work/$1-sdl |
| + | |
| + | fi |
| + | |
| + | |
| + | ###git work |
| + | |
| + | if [ ! -e README.md ]; then |
| + | touch README.md |
| + | echo "$1 is a RPM for SME Server, a Linux distro oriented server. see http://wiki.contribs.org" > README.md |
| + | fi |
| + | |
| + | ##fill empty directories |
| + | find * -type d -empty -exec touch {}/.gitignore \; |
| + | |
| + | git init |
| + | git add . |
| + | git commit -m "first commit to SME Server" |
| + | |
| + | if [[ $2 != 'master' ]]; then |
| + | git co -b $2 |
| + | fi |
| + | |
| + | if [[ $gitexist = "0" ]]; then |
| + | git remote add origin git@github.com:stephdl/$1 |
| + | git push -u -f origin $2 |
| + | |
| + | elif [[ $gitexist = "1" ]]; then |
| + | git remote add origin git@github.com:stephdl/$1-sdl |
| + | git push -u -f origin $2 |
| + | |
| + | fi |
| + | |
| + | |
| + | ##find the apache authentication |
| + | echo "" |
| + | echo "" |
| + | echo "we are looking if we need to modify the apache authentication" |
| + | testapache=$(grep -srni 'AuthType Basic' .) |
| + | if [[ $testapache =~ "AuthType Basic" ]]; then |
| + | echo "$testapache, go to work" |
| + | echo 'Only for SME9, you must add before $OUT .= " AuthBasicProvider external\n";' |
| + | |
| + | else |
| + | echo "no apache authentication" |
| + | fi |
| + | |
| + | ## help to write the changelog |
| + | myDate=$(LC_ALL=C date +"%a %b %d %Y") |
| + | echo "" |
| + | echo "* $myDate stephane de Labrusse <stephdl@de-labrusse.fr>" |
| + | echo "- Initial release to SME Server" |
| + | |
| + | # a bit of clean |
| + | |
| + | rm -rf ~/rpmbuild/SPECS/* ~/rpmbuild/SOURCES/* ~/rpmbuild/SRPMS/* ~/rpmbuild/BUILD/* |
| + | |
| + | ## say where we record the source code |
| + | if [[ $gitexist = "0" ]]; then |
| + | echo "" |
| + | echo " packages are in ~/git_work/$1" |
| + | elif [[ $gitexist = "1" ]]; then |
| + | echo "" |
| + | echo " packages are in ~/git_work/$1-sdl" |
| + | fi |
| + | </nowiki> |
| + | |
| + | ====cvs_update==== |
| + | a script to update all CVS entries of smeserver |
| + | |
| + | Launch the script, all smeserver & smecontribs will be updated, adapt the path to your directory and to you cvs access. That script can be run the night to avoid lose time when you must work |
| + | |
| + | usage |
| + | cvs_update |
| + | |
| + | #!/bin/bash |
| + | |
| + | location=$(pwd) |
| + | |
| + | echo "############################" |
| + | echo " Work In Progress " |
| + | echo "############################" |
| + | |
| + | #first we update the smecontribs tree |
| + | cd ~/work/smecontribs |
| + | cvs -z3 -d:ext:shell.koozali.org:/cvs/smecontribs co -P rpms |
| + | echo "############################" |
| + | echo " smecontribs uptodate " |
| + | echo "############################" |
| + | echo "############################" |
| + | echo " Work In Progress " |
| + | echo "############################" |
| + | |
| + | |
| + | |
| + | cd ~/work/smeserver |
| + | cvs -z3 -d:ext:shell.koozali.org:/cvs/smeserver co -P rpms |
| + | |
| + | echo "############################" |
| + | echo " smeserver uptodate " |
| + | echo "############################" |
| + | |
| + | |
| + | cd $location |
| + | |
| + | ====git_srpm==== |
| + | This script is done to import a srpm and to push it after a 'rpmbuild -bp' to your git folder '~/git_work' here. |
| + | |
| + | After that you can commit it if needed |
| + | |
| + | <nowiki>#!/bin/bash |
| + | ### bit of tests to see if we will not do a mess |
| + | if [[ -z $1 || -z $2 ]]; then |
| + | echo "################################################################################################################################" |
| + | echo "you must give arguments on the git branch (master, sme9, ns6 or anything else) and the package name : git_srpm package_name master" |
| + | echo "################################################################################################################################" |
| + | exit |
| + | fi |
| + | |
| + | |
| + | |
| + | if [[ -d ~/git_work/$1 ]]; then |
| + | echo"" |
| + | echo "###################################" |
| + | echo "the git directories ~/git_work/$1 is already created." |
| + | echo "please remove it before to play with the script" |
| + | echo "think also if you have a github project called stephdl/$1" |
| + | echo "###################################" |
| + | exit |
| + | fi |
| + | |
| + | # Create needed dirs on the build box |
| + | |
| + | mkdir -p ~/rpmbuild/{RPMS,SRPMS,SPECS,SOURCES,BUILD} |
| + | mkdir -p ~/exchange |
| + | mkdir -p ~/git_work/$1 |
| + | |
| + | rpm -ivh $1*.src.rpm |
| + | cd ~/rpmbuild/SPECS |
| + | rpmbuild -bp --nodeps $1*.spec |
| + | |
| + | ##we remove all patch from the spec file |
| + | # sed '/Patch/d' $1*.spec > $1.bis.spec |
| + | # sed '/%patch/d' $1.bis.spec > $1.ter.spec |
| + | # mv -f $1.ter.spec $1.spec |
| + | # rm -f $1.bis.spec |
| + | |
| + | |
| + | cp -R ~/rpmbuild/BUILD/$1*/* ~/git_work/$1 |
| + | cp ~/rpmbuild/SPECS/$1.spec ~/git_work/$1 |
| + | cd ~/git_work/$1 |
| + | |
| + | ##fill empty directories |
| + | find * -type d -empty -exec touch {}/.gitignore \; |
| + | |
| + | echo "Now you have to create the correct github remote repository and add the origin" |
| + | echo " Think to remove all Patches in the specfile" |
| + | echo "" |
| + | echo " cd ~/git_work/$1" |
| + | echo " git init; git add . ; git commit -m 'first commit' ; git checkout -b $2" |
| + | echo " git remote add origin git@github.com:stephdl/$1.git" |
| + | echo " git push -u origin $2" |
| + | |
| + | rm -f ~/rpmbuild/SPECS/$1*.spec ~/rpmbuild/SOURCES/$1* ~/rpmbuild/SRPMS/$1*.src.rpm |
| + | </nowiki> |
| + | |
| + | ====Cron night Job==== |
| + | |
| + | I don't like to wait so each night I do an init of mock on all configurations I need |
| + | |
| + | * 2 * * * mock -r epel-5-x86_64 --init; mock -r epel-5-i386 --init |
| + | * 3 * * * mock -r epel-6-x86_64 --init; mock -r epel-6-i386 --init |
| + | * 4 * * * mock -r smeserver-9-x86_64-base --init; mock -r smeserver-9-i386-base --init |
| + | * 5 * * * mock -r smeserver-8-x86_64-base --init; mock -r smeserver-8-i386-base --init |
| + | * 6 * * * /usr/bin/cvs_update |
| + | |
| + | ====srpm-import to buildsrv==== |
| + | |
| + | srpm-import is a script to import to buildsrv, you need to be granted to use it. the purpose is to create new source in CVS from a remote srpm |
| + | |
| + | usage: |
| + | |
| + | srpm-import smeserver-contribs contrib9 http://mirror.de-labrusse.fr/smeserver/6/SRPMS/smeserver-php-scl-0.4-3.el6.sme.src.rpm |
| + | |
| + | code: |
| + | |
| + | #!/bin/bash |
| + | |
| + | # Author : stephane de labrusse <stephdl@de-labrusse.fr> @2015 |
| + | # the purpose is to import a srpm from a remote url in the CVS of buildsrv |
| + | |
| + | |
| + | #test if all arguments are here |
| + | <nowiki>if [[ -z $3 ]]; then</nowiki> |
| + | echo "########################################################################################################" |
| + | echo "Import srpm to CVS on buildsrv : srpm-import Folder_Name Branch_Name(smeX|contribsX) Url_2_Remote_Srpm" |
| + | echo "########################################################################################################" |
| + | exit |
| + | fi |
| + | |
| + | #we test the branchname |
| + | <nowiki>if [[ $2 != "sme"[8-9] && $2 != "contribs"[8-9] ]];then</nowiki> |
| + | echo "" |
| + | echo "the branchname name is not good, must be sme[8-9] or contribs[8-9]" |
| + | exit 1 |
| + | fi |
| + | |
| + | #we test the remote url |
| + | <nowiki>if wget $3 >/dev/null 2>&1 ; then</nowiki> |
| + | echo "Url : $3 exists..." |
| + | else |
| + | echo "" |
| + | echo "Url : $3 doesn't exists.." |
| + | exit 1 |
| + | fi |
| + | |
| + | #test root cvs folder |
| + | <nowiki>if [[ -d $1 ]]; then</nowiki> |
| + | echo "the source folder $1 already exists" |
| + | fi |
| + | |
| + | #mkdir root cvs folder |
| + | mkdir -p $1 |
| + | cvs add $1 |
| + | cd $1 |
| + | |
| + | #test the branch name |
| + | <nowiki>if [[ -d $2 ]];then</nowiki> |
| + | echo "" |
| + | echo "the branch name $1/$2 already exists : we stop the script." |
| + | echo "" |
| + | echo "You must import a new tarball manually if needed :" |
| + | echo " cd $1/$2" |
| + | echo " wget http://your.src.rpm" |
| + | echo " rpm2cpio *.src.rpm | cpio -idmv --no-absolute-filenames" |
| + | echo " make new-sources FILES=*.?z" |
| + | echo " rm -rf *.src.rpm *.?z *.spec" |
| + | echo " cvs commit -m 'new source commited for the branch $2 of $1'" |
| + | exit 1 |
| + | fi |
| + | |
| + | #mkdir branch name (smeX or contribsX) |
| + | mkdir -p $2 |
| + | cvs add $2 |
| + | cd $2 |
| + | #import correct date of first import |
| + | echo $(date +%s) > import.log |
| + | #copy makefile FIXME |
| + | cp -f ~/Makefile . |
| + | sed -i -e "s/smeserver-durep/$1/g" Makefile |
| + | #wget the srpm by remote url |
| + | wget $3 |
| + | #untar the srpm |
| + | rpm2cpio *.src.rpm | cpio -idmv --no-absolute-filenames |
| + | #import the new source |
| + | make new-sources FILES=*.?z |
| + | #a bit of clean |
| + | rm -rf *.src.rpm *.?z |
| + | #import all to cvs |
| + | cvs add * |
| + | # Informations needed from the spec file |
| + | version=$(rpm -q --qf "%{version}\n" --specfile $1.spec| head -1) |
| + | #ARCH=$(rpm -q --qf "%{arch}\n" --specfile $1.spec | head -1) |
| + | release=$(rpm -q --qf "%{release}\n" --specfile $1.spec | head -1| sed s/\.el.//) |
| + | |
| + | #sed work no needed anymore(see above) |
| + | #version=$(grep -sri 'define version' *.spec | sed 's/%define version //gI') |
| + | #release=$(grep -sri 'define release' *.spec | sed 's/%define release //gI') |
| + | |
| + | #bump the release |
| + | release=$((release + 1)) |
| + | #write to the spec file |
| + | sed -i "/%define release/c %define release $release" *.spec |
| + | sed -i "/changelog/a * $(LC_ALL=C date +"%a %b %d %Y") stephane de Labrusse <stephdl@de-labrusse.fr> $version-$release.sme\n- Initial release to $2\n" *.spec |
| + | echo "" |
| + | echo "Verify in $1/$2 if all is well, then commit the changes" |
| + | echo " cvs commit -m '$(LC_ALL=C date +"%a %b %d %Y") stephane de Labrusse <stephdl@de-labrusse.fr> $version-$release.sme - Initial release to $2'" |
| + | echo "" |
| + | echo " If it is the first importation of a srpm, you must enable it in the CVSROOT, first you have to refresh the CVS source" |
| + | echo " cvs co CVSROOT" |
| + | echo " Then you must edit /CVSROOT/modules and add the name of the new CVS module (alphabetically sorted), after that commit the changes" |
| + | echo "now please fill a bug" |
| + | pkgname=$1 |
| + | VSME=$(echo $2|sed 's/sme\|contribs//gI') |
| + | |
| + | echo "http://bugs.contribs.org/enter_bug.cgi?product=SME%20Contribs&component=${pkgname}&version=${VSME}beta&short_desc=first%20import%20to%20sme$VSME%20tree%20[$pkgname]" |
| + | echo "$(date) |
| + | http://bugs.contribs.org/enter_bug.cgi?product=SME%20Contribs&component=${pkgname}&version=${VSME}beta&short_desc=first%20import%20to%20sme$VSME%20tree%20[$pkgname]">>~/TODO |
| + | |
| + | ==== search ==== |
| + | Like the name, simply search rpm in buildsrv |
| + | |
| + | #!/bin/bash |
| + | <nowiki>if [[ -z $1 ]]; then</nowiki> |
| + | echo "You must specify a name of rpm" |
| + | exit |
| fi | | fi |
| + | find /distros -name "*$1*" |
| + | echo '' |
| + | echo '## other repo ##' |
| + | echo '' |
| + | find /mirrors/ -name "*$1*" |
| + | |
| + | |
| + | usage: |
| + | ./find rpmname |