Changes

Jump to navigation Jump to search
17,827 bytes added ,  06:24, 18 November 2017
m
Update CVS server details
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 144: Line 278:  
  # Create the tar.gz archive  
 
  # Create the tar.gz archive  
 
  tar czf $TMPDIR/$PACKAGE-$VERSION.tar.gz -C $TMPDIR $PACKAGE-$VERSION
 
  tar czf $TMPDIR/$PACKAGE-$VERSION.tar.gz -C $TMPDIR $PACKAGE-$VERSION
 
+
 
  # cp the spec file and tar.gz
 
  # cp the spec file and tar.gz
 
  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

Navigation menu