a few hints are:
1) check licensing carefully (on web AND on a source file);
2) no changelog in spec file, to migrate older changelog, there is a separate procedure; ...
3) check buildrequires by using the BuildSystem
4) remember, there are filetriggers; so no useless %post stuff
5) think about sources in URLs and try to think about other people who might upgrade your spec file (ie: use urls for sources)
5b) try not to repackage upstream stuff (sometimes upstream stuff is not in a tarball)
6) try to split if it's usefull by dependencies or size (or possibly architecture differences)
7) do check what type of macros exist, eg: there is %apply_patches
8) if you do lots of patches it might be helpful to you to use git-svn
and last but not least 9) check the licenses!
To check: OpenSuse Build System does dependancy checking for you, also can use mock
Some useful links for Mageia RPM building
http://pkgsubmit.mageia.org/ can help you to follow progresshttps://wiki.mageia.org/en/Becoming_a_Mageia_Packager
- https://wiki.mageia.org/en/Packagers_RPM_tutorial first installation
- https://wiki.mageia.org/en/Packaging_for_beginners first use, examples on existing rpm and src.rpm
- https://wiki.mageia.org/en/RPM_Specfile_policy policies for spec files
http://cia.vc/stats/project/Mageia follow svn commits (service disontinued) :/
http://pkgsubmit.mageia.org/data/src.mdv.txt bootstrap
http://tmb.mine.nu/Mageia/Cauldron/mdv-SRPMS-pre-rpm5/ backup of src.rpm before rpm5 is introduced in cooker (as src.rpm are compatible between rpm4 and rpm5, this should not be that much useful, only for drastic changes to spec file
I'm a beginner and want to understand packaging first steps
Well here's a proposal : just begin with an existing package on your current distribution (which can be Mandriva Linux 2010.2 for example). Let's take for example boa constructor which is a python IDE.- find the rpm package name
- either in rpmdrake (there's a search area)
- you should find rapidly that the package name is boa-constructor
- or using urpmq (or rpm if you've already installed it)
- urpmq -a boa # finds another package for a software with a related name :/
- urpmq -a constructor # finds the correct package : boa-constructor, more precisely
update for procedure
install rpm-build and create a new user dedicated to rpmbuild in order to rebuild packages (for example, to backport them from cauldron to current stable release Mageia 6)I'm mainly following https://wiki.mageia.org/en/Packagers_RPM_tutorial
# urpmi rpm-build # su - baud123 $ mkdir -p ~/rpmbuild/{SRPMS,SOURCES,SPECS,tmp} $ vi .rpmmacros # create file with appropriate content (see above URL) $ cd rpmbuild/SRPMS/ $ wget http://ftp.free.fr/mirrors/mageia.org/distrib/cauldron/SRPMS/core/release/glances-2.10-2.mga7.src.rpm $ cd .. $ rpm -i SRPMS/glances-2.10-2.mga7.src.rpm attention : utilisateur iurt inexistant - utilisation de root attention : groupe iurt inexistant - utilisation de root attention : utilisateur iurt inexistant - utilisation de root attention : groupe iurt inexistant - utilisation de root $ cd SPECS $ rpmbuild -ba glances.spec # display re-building operations # urpme glances # rpm -ivh /home/baud123/rpmbuild/RPMS/noarch/glances-2.10-2.mga6.noarch.rpm
Check for links to existing packages in many distribution
https://distrowatch.com/table.php?distribution=mageia
https://repology.org/
Par exemple, je cherchais gpg2 aujourd'hui :
- https://repology.org/projects/?search=gnupg2 => rien
- http://madb.mageia.org/package/show/application/0/name/gnupg2 => il est packagé chez Mageia (et d'autres distributions)
- https://distrowatch.com/packages.php => il s'appelle aussi gnupg et la liste de distrowatch est par nature limitée
J'ai fini par le trouver sous le nom gnupg :
- https://repology.org/projects/?search=gnupg&maintainer=&category=&inrepo=¬inrepo=&repos=&families=&repos_newest=&families_newest=
quel est le nom pivot utilisé ? Il y a des différences de nommage entre les distribution...
- visiblement utilisation de règles de nommage : https://github.com/repology/repology-rules/blob/master/800.renames-and-merges/g.yaml#L200
Il y a plusieurs parsers pour chaque distribution : https://github.com/repology/repology/tree/master/repology/parsers/parsers
Debian :
Fedora :
http://koji.build/
https://unix.stackexchange.com/questions/62355/is-there-a-tool-website-to-compare-package-status-in-different-linux-distributio