How to Patch a Buggy Package with ZZ/OSS Installer

I had to do, what developers really don’t like: patching a third-party class package due to a bug for the forthcoming release of one of our software products.

The package I had to patch is PEAR::Archive_Tar because of a yet unfixed bug I have reported some time ago. The application depending on that package is the forthcoming release of ZZ/OSS Installer. I was able to use the installer itself to apply the patch due to the fact that the ZZ/OSS Installer is itself developed and installed with the ZZ/OSS Installer – I love russian doll architectures :).

Creating and applying the patch was as simple as:
1. Fix the bug in Tar.php.
2. Put the fixed Tar.php in a package called com.zzoss.pear.archive_tar.patch.
3. Make sure in the deps element of the package.xml that the patch package has a dependency on the PEAR::Archive_Tar package.
4. Add this package to the application.xml of the next ZZ/OSS Installer release.

What happens when installing the application with the ZZ/OSS Installer is that the Tar.php file from PEAR::Archive_Tar gets overwritten by the fixed Tar.php from com.zzoss.pear.archive_tar.patch, because of the dependency definition.

Harry Fuecks Comments ZZ/OSS Installer

Harry Fuecks took a look at ZZ/OSS Installer and his honest comments clearly describe the status of the application and its potential.

Yes, true, the latest release of the installer is a development release with known and still-to-be-found bugs 😉 We are collecting feedback from the community on new features and hidden bugs, that’s why we did this early release. Meanwhile, development goes on and we are fixing bugs and implementing new features for the next release 1.1.0dev2.

Although the application itself is not yet superstable, I believe it is good enough for experienced PHP devs to start deploying their applications with it. Developing and installing applications that entirely or partly consist of PEAR-like packages, is much easier with ZZ/OSS Installer compared to PEAR Installer, because there is e.g. automatic dependency resolving built in. This tutorial on deploying phpMyAdmin with ZZ/OSS Installer gives you a basic idea how to procede.

Should you encounter any problems, feel free to contact the ZZ/OSS Installer developers via the mailinglist, IRC, etc. as stated on the ZZ/OSS Installer project Website – we’ll do our best to help you. The nice thing is, that once you have a working ZZ/OSS Installer on your system, it is pretty easy to install the latest version with this installer from CVS sources.

ZZ/OSS Installer Client 1.1.0dev1 Released

ZZ/OSS is happy to announce that the ZZ/OSS Installer Client (ZIC) 1.1.0dev1 has been released. ZIC is a PHP-based installation wizard and development tool for professional release management of modular PHP applications.

This is a development release with new features. You can use this version to make your own PHP software installable with ZIC. The schema of the XML files describing your application is solid.

This new tutorial on making phpMyAdmin installable with ZIC is a good start.

If you use Mozilla, please make sure to set the preference ‘network.http.redirection-limit’ to the value ’30’ or higher if you get a “redirection limit” error. Type ‘about:config’ into the address field to access the preferences.

Download ZIC 1.1.0dev1 from the Sourceforge project homepage.

Please report bugs to the bug tracker, mailinglist, or IRC.

More information is available at the installer homepage
http://www.zzoss.com/projects/installer/

An excerpt of most important changes:

  • works on Windows and Linux
  • integrated plugins and packages manager for installed applications
  • development applications can now also be installed
  • default install path of development applications has ‘-dev’ added to app name
  • new default theme ‘kde’ which is more neutral
  • option to automatically remove setup wizard after installation
  • handle different magic quotes settings
  • progress bar shows download process
  • single packages or plugins can be added
  • works with E_ALL error reporting
  • fileroles: default behaviour of installer without having any filerole plugins installed is that the file gets copied to the location specified in filelist/file of package.xml
  • configurable quick installation of development applications allows for faster development
  • detect circular dependencies of packages needing each other
  • process filelists with nested dir elements in package.xml