|Version 23 (modified by szabgab, 6 years ago) (diff)|
Development in general
We are using Subversion for version control. The main development of Padre is in the trunk http://svn.perlide.org/padre/trunk/Padre but there are several additional projects and almost all the plugins of Padre also live in the same repository so the best if you check out the whole trunk http://svn.perlide.org/padre/trunk
$ svn co http://svn.perlide.org/padre/trunk padre
Then you can run the standard CPAN module process:
$ perl Makefile.PL # which will tell about all the missing dependencies of Padre $ make $ make test
For a more detailed set of instructions on how to install the dependencies visit the Download
Once all the above works well you can launch Padre from the SVN tree by running
$ cd padre $ perl dev.pl
dev.pl has some more parameters you can see by typing
$ perl dev.pl -h
The most important being
$ perl dev.pl -a
that will include the path to all the plugins located in trunk/
see the http://search.cpan.org/~szabgab/Padre/lib/Padre/Manual/Hacking.pod file for Core Padre development and http://search.cpan.org/~szabgab/Padre/lib/Padre/Plugin.pm for Plugin development.
Translation is basically part of the development effort. For more details please take a look at this page: See TranslationIntro
The documentation of Padre is standard POD embedded in the .pm files. If you'd like to improve those you should check out the source code of Padre as described above and send patches or ask for commit bit. The documentation is part of the regular development process.
Unfortunately Padre has not enough automated test mostly due to the fact that we hardly know how to test GUI applications. The existing tests are located in the standard t/ directory. If you'd like to help in this and if you are on Windows you could take a look at the t/win32/ directory where we have a few tests written using Win32::GUItest. You would be very highly regarded if you improved the test coverage of Padre!!
Release and Distribution
Release of Padre
As of release 0.21 we started a rotation of release managers for Padre. See Release_History
- Obtain co-maintenance permissions for all of the namespaces in the Padre distribution. Talk to Gábor Szabó (szabgab), Adam Kennedy (Alias), or Steffen Müller (tsee) about this.
- cd to trunk/Padre
- Make sure the Changes file is up to date and manually update if necessary, add the vX.XX Date string at the top (commit)
- run perl ../tools/tidy_pm_files.pl that will apply blessed padre style in every module. (commit)
- run perl ../tools/update_version_number.pl VERSION that will update the version number in every module and report if there was no VERSION entry in a module. Those need to be fixed. (commit)
- run perl ../tools/release.pl REV VERSION [--tag] will try to create a distribution using a temporary directory and copy the resulting Padre-X.XX.tar.gz in the current directory. The optional --tag flag will also create a tag in SVN. So the release manager first can run it dry and when she is sure it creates a good release can run it again to also tag it in SVN.
- Upload to http://perlide.org/download/source/ (needs to be done by Gabor)
- try installing it using pip, tell people on IRC #padre about it
- Upload to PAUSE
- Send announcement to padre-dev mailing list
- Send announcement to padre-news mailing list (Gabor needs to approve the message)
- Submit announcement to http://use.perl.org/
- Update the Release History
- Add the version number to the list of versions in Trac (Gabor needs to do this)
- Important: Assign primary maintainer status to Gabor (PAUSE ID 'SZABGAB') for all namespaces that are new in the current release.
- Log into your PAUSE account
- Click "View Permissions" in the menu
- Note all Padre::* classes for which you are listed as "first-come" (as opposed to "co-maint").
- Click "Change Permissions" in the menu
- Under "2. You are primary maintainer:" select any one or all of the Padre::* namespaces that appear in the list view.
- Click Select for "2.1 Pass primary maintainership status to somebody else (giving it up at the same time)"
- Make sure all Padre::* namespaces are selected in the new listbox.
- Enter "SZABGAB" in the text field.
- Click "Pass Maintainership Status".
- You will automatically become co-maintainer instead of primary maintainer of the classes in question.
- ppm creation:
- tar xzf Padre-X.XX.tar.gz
- perl Makefile.PL
- make ppm will create a Padre.ppd file and a Padre.tar.gz file
- change the other files in /trunk/ppm according to the README there
- upload Padre.tar.gz as Padre-X.XX.tar.gz to http://perlide.org/download/ppm/
- upload the other files from trunk/ppm to http://perlide.org/download/ppm/
- Create executable for Linux:
- make exe
- Upload to http://perlide.org/download/binary/
Release of Padre using a branch
In order to allow a few days of stabilization of Padre and to allow the translators to catch up while allowing everyone else to freely work on the main trunk we can start releasing from a branch. Trying to capture the process here.
- A few (2 ?) days before the planned release date the release manager creates a copy:
- run perltidy on the trunk
- svn cp http://svn.perlide.org/padre/trunk/Padre http://svn.perlide.org/padre/branches/Padre-X.XX (replace X.XX with the future version number)
- Anyone who wants to work on the release branch can
- cd trunk/Padre
- svn switch http://svn.perlide.org/padre/branches/Padre-X.XX .
- then every commit will go to the branch while the plugins are still from trunk
- the release can be done here but probably it is better NOT to run the perl tidy on the branch as it will make merging very difficult
- do the regular release process as above
- when finished merge the branch back to trunk:
- svn switch http://svn.perlide.org/padre/trunk/Padre .
- svn log --stop-on-copy http://svn.perlide.org/padre/branches/Padre-X.XX
- Take the FIRST and LAST revision number from that log
- svn merge -rFIRST:LAST http://svn.perlide.org/padre/branches/Padre-X.XX/ .
- svn commit -m'merge -rFIRST:LAST http://svn.perlide.org/padre/branches/Padre-X.XX/'
- now you can remove the release branch:
- svn rm http://svn.perlide.org/padre/branches/Padre-X.XX/
Release and Distribution of Plugins and other packages
The packages can use either Makefile.PL (Module::Install) or Build.PL (Module::Build). We have not tested the below process with ExtUtils::Makemaker
No need to keep MANIFEST and META.yml in version control!
Add to MANIFEST.SKIP
# avoid po and pot files (gettext) \.pot$ \.po$
If you are using Module::Build
Don't add a Makefile.PL to the version control as it will be created during packaging
Add the following to Build.PL to include the generated .mo files
- cd to the directory of the plugin or the package
- run perl ../tools/tidy_pm_files.pl (commit)
- run perl ../tools/update_version_number.pl VERSION and update Changes (commit)
- run perl ../tools/release.pl REV VERSION [--tag]
- upload to PAUSE
Distribution of Padre
The primary distribution channel of Padre is CPAN. Hence for every release first we create a CPAN distribution of Padre. (See above).
Based on the CPAN package the downstream distributors (Debian, Fedora, Mandriva, FreeBSD etc.) create their .deb, .rpm etc. files.
There is a Dist::Perl::Padre in the works that will allow us to create a Perl distribution that has padre already installed. At one point we might be able to install this distribution independently from any other perl installation on the same machine. That will mean the 'production perl' of the user and the perl needed by Padre does not need to be the same.
There is a plan to creat a Dist::Perl::XL which would be a full version of perl with Padre (and possibly other things) installed and zipped. Users will be able to download it, unzip it and run padre from that perl. They will be able to use either the perl that came with Padre or any other perl as their 'production perl'. Primarily we try to make this work for Linux.
No idea. Maybe the above Dist::Perl::XL will work there too.
Distribution of the plugins
Some of the plugins will be distributed by the downstream distributors and/or will be packaged in the Dist::Perl::Padre and Dist::Perl::XL distributions. Others will be able to be either installed from CPAN or will be packaged as PAR packages.
See also the Download page