Changes between Version 1 and Version 2 of BufferExample


Ignore:
Timestamp:
05/30/08 02:36:46 (5 years ago)
Author:
bruno
Comment:

example with patch needed

Legend:

Unmodified
Added
Removed
Modified
  • BufferExample

    v1 v2  
    1111Once done, ask pb to generate its structure, jst giving the name of the project (-p) and the release you're packaging (-r): 
    1212{{{ 
    13 pb -p buffer -r 1.19 newproj 
     13pb -p buffer -r 1.19 newproj buffer 
    1414Adding /users/bruno/pb/projects/buffer to SVN... A         /users/bruno/pb/projects/buffer 
    1515OK 
     
    1919A         /users/bruno/pb/projects/buffer/pbconf/1.19 
    2020A         /users/bruno/pb/projects/buffer/pbconf/1.19/buffer.pb 
    21 A         /users/bruno/pb/projects/buffer/pbconf/1.19/pkg1 
    22 A         /users/bruno/pb/projects/buffer/pbconf/1.19/pkg1/rpm 
    23 A         /users/bruno/pb/projects/buffer/pbconf/1.19/pkg1/rpm/pkg1.spec 
    24 A         /users/bruno/pb/projects/buffer/pbconf/1.19/pkg1/deb 
    25 A         /users/bruno/pb/projects/buffer/pbconf/1.19/pkg1/deb/changelog 
    26 A         /users/bruno/pb/projects/buffer/pbconf/1.19/pkg1/deb/control 
    27 A         /users/bruno/pb/projects/buffer/pbconf/1.19/pkg1/deb/pkg1.dirs 
    28 A         /users/bruno/pb/projects/buffer/pbconf/1.19/pkg1/deb/pkg1.docs 
    29 A         /users/bruno/pb/projects/buffer/pbconf/1.19/pkg1/deb/compat 
    30 A         /users/bruno/pb/projects/buffer/pbconf/1.19/pkg1/deb/rules 
    31 A         /users/bruno/pb/projects/buffer/pbconf/1.19/pkg1/deb/copyright 
    32 A         /users/bruno/pb/projects/buffer/pbconf/1.19/pkg1/pbfilter 
     21A         /users/bruno/pb/projects/buffer/pbconf/1.19/buffer 
     22A         /users/bruno/pb/projects/buffer/pbconf/1.19/buffer/rpm 
     23A         /users/bruno/pb/projects/buffer/pbconf/1.19/buffer/rpm/buffer.spec 
     24A         /users/bruno/pb/projects/buffer/pbconf/1.19/buffer/deb 
     25A         /users/bruno/pb/projects/buffer/pbconf/1.19/buffer/deb/changelog 
     26A         /users/bruno/pb/projects/buffer/pbconf/1.19/buffer/deb/control 
     27A         /users/bruno/pb/projects/buffer/pbconf/1.19/buffer/deb/buffer.dirs 
     28A         /users/bruno/pb/projects/buffer/pbconf/1.19/buffer/deb/buffer.docs 
     29A         /users/bruno/pb/projects/buffer/pbconf/1.19/buffer/deb/compat 
     30A         /users/bruno/pb/projects/buffer/pbconf/1.19/buffer/deb/rules 
     31A         /users/bruno/pb/projects/buffer/pbconf/1.19/buffer/deb/copyright 
     32A         /users/bruno/pb/projects/buffer/pbconf/1.19/buffer/pbfilter 
    3333A         /users/bruno/pb/projects/buffer/pbconf/1.19/pbfilter 
    3434A         /users/bruno/pb/projects/buffer/pbconf/1.19/pbfilter/novell.pbf 
     
    5050Ajout          buffer/pbconf/1.19/pbfilter/novell.pbf 
    5151Ajout          buffer/pbconf/1.19/pbfilter/rpm.pbf 
    52 Ajout          buffer/pbconf/1.19/pkg1 
    53 Ajout          buffer/pbconf/1.19/pkg1/deb 
    54 Ajout          buffer/pbconf/1.19/pkg1/deb/changelog 
    55 Ajout          buffer/pbconf/1.19/pkg1/deb/compat 
    56 Ajout          buffer/pbconf/1.19/pkg1/deb/control 
    57 Ajout          buffer/pbconf/1.19/pkg1/deb/copyright 
    58 Ajout          buffer/pbconf/1.19/pkg1/deb/pkg1.dirs 
    59 Ajout          buffer/pbconf/1.19/pkg1/deb/pkg1.docs 
    60 Ajout          buffer/pbconf/1.19/pkg1/deb/rules 
    61 Ajout          buffer/pbconf/1.19/pkg1/pbfilter 
    62 Ajout          buffer/pbconf/1.19/pkg1/rpm 
    63 Ajout          buffer/pbconf/1.19/pkg1/rpm/pkg1.spec 
     52Ajout          buffer/pbconf/1.19/buffer 
     53Ajout          buffer/pbconf/1.19/buffer/deb 
     54Ajout          buffer/pbconf/1.19/buffer/deb/changelog 
     55Ajout          buffer/pbconf/1.19/buffer/deb/compat 
     56Ajout          buffer/pbconf/1.19/buffer/deb/control 
     57Ajout          buffer/pbconf/1.19/buffer/deb/copyright 
     58Ajout          buffer/pbconf/1.19/buffer/deb/buffer.dirs 
     59Ajout          buffer/pbconf/1.19/buffer/deb/buffer.docs 
     60Ajout          buffer/pbconf/1.19/buffer/deb/rules 
     61Ajout          buffer/pbconf/1.19/buffer/pbfilter 
     62Ajout          buffer/pbconf/1.19/buffer/rpm 
     63Ajout          buffer/pbconf/1.19/buffer/rpm/pkg1.spec 
    6464Transmission des données .............. 
    6565Révision 457 propagée. 
     
    7171}}} 
    7272 
    73 Now you "just" need to edit those configuration files to review them and prepare your build of packages. 
     73Now you "just" need to edit those configuration files to review them and prepare your build of packages. Begining with the first one, the project's conf file: 
    7474{{{ 
    7575grep -Ev '^#|^$' buffer/pbconf/1.19/buffer.pb 
     
    9090pbrepo indicates where the resulting packages will be available for download. pbwf indicates whether the tar file is well-formed (it should contain a directory with name-verion). The ssh* variables indicates where will packages be uploaded at the end of the build. And the name of the directory for defpkgdir is not important as we do not dal with a local CMS. 
    9191 
     92We also need to adapt the filter a bit: 
     93{{{ 
     94grep -Ev '^#|^$' buffer/pbconf/1.19/pbfilter/* 
     95buffer/pbconf/1.19/pbfilter/all.pbf:filter PBREPO = $pbrepo 
     96buffer/pbconf/1.19/pbfilter/all.pbf:filter PBSRC = src/%{name}-%{version}.tar.gz 
     97buffer/pbconf/1.19/pbfilter/all.pbf:filter PBVER = $pbver 
     98buffer/pbconf/1.19/pbfilter/all.pbf:filter PBDATE = $pbdate 
     99buffer/pbconf/1.19/pbfilter/all.pbf:filter PBLOG = yes 
     100buffer/pbconf/1.19/pbfilter/all.pbf:filter PBTAG = $pbtag 
     101buffer/pbconf/1.19/pbfilter/all.pbf:filter PBREV = $pbrev 
     102buffer/pbconf/1.19/pbfilter/all.pbf:filter PBPKG = $pbpkg 
     103buffer/pbconf/1.19/pbfilter/all.pbf:filter PBPACKAGER = $pbpackager 
     104buffer/pbconf/1.19/pbfilter/all.pbf:filter PBDESC = This is a program designed to speed up writing tapes on remote tape drives.  When this program is put "in the pipe", two processes are started.  One process reads from standard-in and the other writes to standard-out.  Both processes communicate via shared memory. 
     105buffer/pbconf/1.19/pbfilter/all.pbf:filter PBURL = http://hello-penguin.com/software/buffer 
     106buffer/pbconf/1.19/pbfilter/deb.pbf:filter PBGRP = utils 
     107buffer/pbconf/1.19/pbfilter/md.pbf:filter PBGRP = Archiving/Backup 
     108buffer/pbconf/1.19/pbfilter/novell.pbf:filter PBGRP = Productivity/Archiving/Backup 
     109buffer/pbconf/1.19/pbfilter/rpm.pbf:filter PBGRP = Applications/Archiving 
     110buffer/pbconf/1.19/pbfilter/rpm.pbf:filter PBSUF = $pbsuf 
     111}}} 
     112 
     113This defines all the macro that are needed to do a build. 
     114Then adapt the spec file if you're on a rpm based distro, or the control file if under a deb one. 
     115I'm using Mandriva so go for the spec: 
     116{{{ 
     117grep -Ev '^#|^$' buffer/pbconf/1.19/buffer/rpm/buffer.spec 
     118Summary:        buffer speeds up writing tapes on remote tape drives 
     119Summary(fr):    buffer accélère l'écriture des bande sur des périphériques distants 
     120Name:           PBPKG 
     121Version:        PBVER 
     122Release:        PBTAGPBSUF 
     123License:        PBLIC 
     124Group:          PBGRP 
     125Url:            PBURL 
     126Source:         PBREPO/PBSRC 
     127BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(id -u -n) 
     128%description 
     129PBDESC 
     130%description -l fr 
     131buffer accélère l'écriture des bande sur des périphériques distants 
     132%prep 
     133%setup -q 
     134%build 
     135make %{?_smp_mflags} 
     136%install 
     137%{__rm} -rf $RPM_BUILD_ROOT 
     138install -m 755 -D buffer $RPM_BUILD_ROOT%{_bindir}/buffer 
     139install -m 644 -D buffer.man $RPM_BUILD_ROOT%{_mandir}/man1/buffer.1 
     140%clean 
     141%{__rm} -rf $RPM_BUILD_ROOT 
     142%files 
     143%defattr(-,root,root) 
     144%doc ChangeLog 
     145%doc COPYING README AUTHORS NEWS 
     146%{_bindir}/buffer 
     147%{_mandir}/man1/buffer.1* 
     148%changelog 
     149PBLOG 
     150}}} 
     151 
     152As you can see globally only few changes :-) 
     153Now it's time to test the result of our configuration: 
     154{{{ 
     155pb -p buffer cms2build 
     156Project: buffer 
     157Action: cms2build 
     158Packages: buffer 
     159 
     160Management of buffer 1.19-1 (rev flat) 
     161 ... 2008-05-30 02:18:28 URL:http://hello-penguin.com/software/buffer/buffer-1.19.tar.gz [17920/17920] -> "/users/bruno/tmp/pb.jh8U7Q7VdP/buffer-1.19.tar.gz" [1] 
     162OK 
     163Extracting /users/bruno/tmp/pb.jh8U7Q7VdP/buffer-1.19.tar.gz in /users/bruno/pb/projects/buffer/delivery... OK 
     164Generating fake ChangeLog for test version 
     165Build files generated for debian-3.1,debian-4.0,fedora-4,fedora-5,fedora-6,fedora-7,fedora-8,fedora-9,mandrake-10.1,mandrake-10.2,mandriva-2006.0,mandriva-2007.0,mandriva-2007.1,mandriva-2008.0,mandriva-2008.1,redhat-7.3,redhat-9,rhel-3,rhel-4,rhel-5,sles-10,sles-9,suse-10.0,suse-10.1,suse-10.2,suse-10.3,ubuntu-6.06,ubuntu-7.04,ubuntu-7.10,ubuntu-8.04 
     166No Build files found for gentoo-nover 
     167Creating buffer tar files compressed... OK 
     168Under /users/bruno/pb/projects/buffer/delivery/buffer-1.19.tar.gz 
     169}}} 
     170So far so good. We now have a new tar file which contains all the build files expanded for the various distribution supported (even if some of them are not ready yet e.g. .deb in our case). 
     171 
     172Go one step further: 
     173{{{ 
     174pb -p buffer build2pkg 
     175Project: buffer 
     176Action: build2pkg 
     177Packages: buffer 
     178Extracting build files... OK 
     179Building package with /users/bruno/pb/projects/buffer/build/SPECS/buffer.spec under /users/bruno/pb/projects/buffer/build... Executing(%prep): /bin/sh -e /users/bruno/pb/projects/buffer/build/tmp/rpm-tmp.85498 
     180+ umask 022 
     181+ cd /users/bruno/pb/projects/buffer/build/BUILD 
     182+ '[' 1 -eq 1 ']' 
     183+ '[' 1 -eq 1 ']' 
     184+ '[' 1 -eq 1 ']' 
     185+ cd /users/bruno/pb/projects/buffer/build/BUILD 
     186+ rm -rf buffer-1.19 
     187+ /usr/bin/gzip -dc /users/bruno/pb/projects/buffer/build/SOURCES/buffer-1.19.tar.gz 
     188+ tar -xf - 
     189+ STATUS=0 
     190+ '[' 0 -ne 0 ']' 
     191+ cd buffer-1.19 
     192+ exit 0 
     193Executing(%build): /bin/sh -e /users/bruno/pb/projects/buffer/build/tmp/rpm-tmp.85498 
     194+ umask 022 
     195+ cd /users/bruno/pb/projects/buffer/build/BUILD 
     196+ cd buffer-1.19 
     197+ '[' 1 -eq 1 ']' 
     198+ '[' 1 -eq 1 ']' 
     199+ make -j4 
     200gcc -Wall -O6 -fomit-frame-pointer   -c -o buffer.o buffer.c 
     201gcc -Wall -O6 -fomit-frame-pointer   -c -o sem.o sem.c 
     202sem.c:108: attention : return type defaults to ‘int’ 
     203sem.c: In function ‘do_sem’: 
     204sem.c:120: attention : implicit declaration of function ‘getpid’ 
     205sem.c:124: attention : ‘return’ with no value, in function returning non-void 
     206buffer.c:133: erreur: conflicting types for ‘shmat’ 
     207/usr/include/sys/shm.h:58: erreur: previous declaration of ‘shmat’ was here 
     208buffer.c: In function ‘main’: 
     209buffer.c:274: attention : implicit declaration of function ‘exit’ 
     210buffer.c:274: attention : incompatible implicit declaration of built-in function ‘exit’ 
     211buffer.c: In function ‘parse_args’: 
     212buffer.c:297: attention : implicit declaration of function ‘atoi’ 
     213buffer.c: In function ‘buffer_allocate’: 
     214buffer.c:515: attention : format ‘%08x’ expects type ‘unsigned int’, but argument 4 has type ‘char *’ 
     215buffer.c:520: attention : implicit declaration of function ‘bzero’ 
     216buffer.c:520: attention : incompatible implicit declaration of built-in function ‘bzero’ 
     217buffer.c: In function ‘fill_block’: 
     218buffer.c:695: attention : incompatible implicit declaration of built-in function ‘bzero’ 
     219buffer.c: In function ‘byee’: 
     220buffer.c:874: attention : incompatible implicit declaration of built-in function ‘exit’ 
     221buffer.c:878: attention : incompatible implicit declaration of built-in function ‘exit’ 
     222make: *** [buffer.o] Erreur 1 
     223make: *** Attente des tâches non terminées.... 
     224error: Bad exit status from /users/bruno/pb/projects/buffer/build/tmp/rpm-tmp.85498 (%build) 
     225 
     226 
     227RPM build errors: 
     228    Bad exit status from /users/bruno/pb/projects/buffer/build/tmp/rpm-tmp.85498 (%build) 
     229child (rpmbuild --define 'packager Bruno Cornec <bruno@project-builder.org>' --define "_topdir /users/bruno/pb/projects/buffer/build" -ba /users/bruno/pb/projects/buffer/build/SPECS/buffer.spec) exited with value 1 
     230Checking validity of rpms with rpmlint... Error: no installed packages by name RPMS/*/buffer-1.19-1.mdv2008.1.*.rpm 
     231Error: no installed packages by name SRPMS/buffer-1.19-1.mdv2008.1.src.rpm 
     232OK 
     233}}} 
     234Ok, some patches seem to be required to be able to compile and link cleanly that application on my new shiny Mandriva 2008.1.