Current status for Purp:

On this page you can see how the work on Purp is progressing.


10/5-2002
The rewrite is now about 50-60% finished. Purp now shows installed packages, which can navigated as expected. The interface seems to work fine this far and I am rather satisfied with the new UI code design. The main things to do right now is to add listing of available packages and after that add package operations. It will be interesting to implement those parts since they were very messy in the old code base.

1/7-2001
Added initial selection bar movement. Made some enhancements on the navigation.

25/6-2001
Added panel functions that lists packages. Added the ability to enter a group in a panel.

22/6-2001
Added hierarchial list creation (the internal representation of groups). The hierarchial insertions seems to work, but sure needs some enhancements and testing before I rely on it.

19/6-2001
Added a new RPM class which works as an abstraction layer towards librpm. Added a function that reads all packages in RPMDB and adds them to the lists.

18/6-2001
More work on list structures done.

17/6-2001
Started to implement the straight list structures.

11/6-2001
Several parts of the fundamental interface structure is basically implemented. Now it's time to implement the data structures handling the package information.

2/6-2001
Started a big rewrite of Purp! Many parts of the existing source code is old. I began developing Purp when I started my university studies about 5-6 years ago and I didn't have the skills to handle and design larger projects properly. This means that the code is messy and it's hard to make it better without implementing bugs and getting gray hair. Therefore I started a big rewrite from scratch! I am now implementing a better design in C++. I will ofcourse use the parts of old Purp that is reuseable. This will take a while, but it will sure be better!

27/5-2001 (Released as version 1.1.0)
Finished introducing autoconf. I have sucessfully used this version on a RedHat 7.1 and a RedHat 6.2 machine. Released as version 1.1.0!

25/5-2001
Started to introduce autoconf to make building easier. Now it's not necesary to manually set RPM version in Makefile.

18/5-2001
Made some work getting Purp up on a RedHat 7.0 machine with latest updates. It seems to work now but needs some testing. I will go on with RedHat 7.1 after that.

11/1-2001 (Released as version 1.0.0)
Finally a release! After all years I think it's just about time to release version 1.0. This version should be more stable than 0.9.5 and works fine with RPM 4, i.e. RedHat 7. The next thing to do now is to change the build system, moving it to autoconf instead of static makefiles.

9/1-2001
Added the RedHat 7 changed to the main source tree and fixed som minor bugs. I will make RPM-packages tomorrow.

7/11-2000
Started hacking on Purp making it work under RedHat 7.0 (RPM4). RedHat has (again!) changed several of the internal structures in rpmlib and I have to change some fundamental parts of Purp. This work is almost finished, Purp now starts and installs under RedHat 7.0, but there are some minor bugs to fix before I release it. Probably within some days.. :-)

2/7-2000 (Released as version 0.9.5)
Finally a new version!

25/5-2000
The little bug in the textwindow is fixed. But it also showed that the text-handling in the text-windows isn't very good. Therefore I have started to implement a class for texts and textlines. This is almost finished. This will mean that the list-script-window will be scrollable (finally!).

21/5-2000
Implemented better handling of the information-lists when using showall-mode. Earlier a package that was installed was moved, now it's copied so it still is visible in the right panel. I also found a textwindow-bug which I need to fix before releasing this.

16/5-2000
Changed some parts of Purp that made it impossible to compile together with RPM 3.0.4 (i.e. RedHat 6.2), now it seems to work fine. Also applied some patches from Ingo Brueckl that makes the color-configurations easier. There is some minor things to fix before a new version, but I guess it will be finished within some days.

23/4-2000 (Released as version 0.9.3-beta2)
Fixed the bugs found 20/4. Also fixed an old interface-bug which caused packages that was installed with Purp to show up with a bad installdate in the info-panel (since Purp didn't read the new installdate).

20/4-2000
Applied patches from Ingo Brueckl. Found some bugs in the new show-all-parts of the code. Lost inspiration and watched TV instead..

11/4-2000 (Released as version 0.9.3-beta1)
Added configureability to more things. Applied Ingo Brueckl's patch that makes it possible to list all packages in the right panel. This can be turned on by the flag '-a' or by setting the default behaviour in the config-file. The already installed packages are shown in dimmed color (if possible) and with a paranthesis around the name. Now it's time for bugfixing, bugfixing and more bugfixing! Then I guess Purp will go 1.0! :-)

10/4-2000
Did some additions and bug-fixing on the config-class.

5/4-2000
The work on the config-class is finished! Now Purp reads config-files to get settings. Well, the config-file isn't used very much yet (for the moment it's only possible to set colors), but that will change in the future. The next thing to do is to apply Ingo Brueckl's patches (makes it possible to list all packages in the right panel) and kill the bugs that causes Purp to crash some times...

13/2-2000
Started to develop a class for handling config-files. This class will ofcourse be used to handle a '.purprc'. The class is about half finished.

5/8-1999 (Released as version 0.9.2)
A bug that caused a segfault when entering a RPM-path without a "/" at the end is fixed. This bug didn't affect me because I'm a tab-completion-oholic and gets a "/" at the end from the tab-completion. :-)

27/7-1999 (Released as version 0.9.1)
The bug that caused a segfault after installing many packages are fixed. Some other smaller bugs have been fixed too.

9/7-1999 (Released as version 0.9.0)
Lots of bugfixes are made since the last time I wrote here. There are still some bugs though.

25/6-1999
Some minor bugfixes and a new feature. Now the user can use '*' when searching for packages. For example 'freec*' matches 'freeciv-version-release.i386.rpm'. The only problem is that I on some systems get a strange segfault after several installation/remove. The problem are not easy to reproduce and hard to debug. I think I have to fix this before releasing the next version.

17/6-1999
Well, at least soon a release.. Killed the bug that caused a crash when a non-valid directory was entered at the command-line. Fixed som counting-problems that caused the package/size-counters for the panels to show wrong values after a package-remove.

15/6-1999
Soon time for release! All the important functions now works fine! There are still some small bugs to kill, but that won't take very long time I hope.

14/6-1999
Lots of things done this night. The progressbars now work fine. The data-structures that I use to store information about the packages and their hierarchy now seems to work fine with the new installation-function. Now there's just some work getting upgrade/erase work before we have a brand new version of Purp!

13/6-1999
Made some major changes in the installation-functions, which have changed in RPM 3.0. Now Purp uses transactions. Installation works now, Upgrade and Remove will work soon. Some work will be needed to get the progressbar working with the callback-functions.

10/6-1999
Began work getting Purp work with RedHat 6.0. Debugged the rpmlib-initializations. Now Purp at least starts up, reading the packages.

7/12-1998
Fixed some bugs..

5/9-1998
Solved some problems with the sorting-order of packages, that made packages and folders to show up mixed together in the panels.

Added more information to the progressbars, for example the size of the package currently being installed and total size of the operation. The progressbar at startup now displays the number of packages being read.

28/8-1998 (Released as version 0.4.0)
Killed a bug that caused segmentation faults when run as a normal user (without write-permission to the RPM-database).

Blocked output while opening the RPM-database to prevent error messages from rpmlib to write over the user-interface.

27/8-1998 Because of problems with the newest ncurses-releases from RedHat, which caused segmentation faults when the terminal-window was resized I disabled the resize-functions. Since I can't solve the ncurses-problems myself I don't know for how long the resize-functions will be disabled.

The progress-bar displayed during installations and upgrades are now also showing a bar for the total operation.

23/6-1998
The code for the user interface is now rewritten, almost from scratch. Now it's much more well structured and efficient. I also added the possibility to resize the terminal-window while using Purp under X-Windows.

8/6-1998 (Released as version 0.3.0)
Fixed problems with Purp under RedHat 5.1. Added a new function "Follow", which navigates the panel not active to the same folder as the currently active panel. Finally added sorting-functions to the panels!

27/5-1998 (Released as version 0.2.0)
Trimmed the internal liststructures, making Purp take less memory. Fixed a couple of bugs.

24/5-1998
Added the possibility to search for packages by entering their name. Made Purp possible to run in a limited mode for users without write-permission to the RPM-database. Added redraw-screen-command which redraws everything when the user press '^L'. Fixed a couple of bugs.

19/3-1998 (Released av version 0.1.0)
Purp is finally finished for a first release! The most important functions are implemented. The most important thing now is to spread it to users and fix the bugs they report.

29/12-1997
Made lots of work on the dependencies-checks, so conflicts will be listed to the user. I have plans for a conflict-solve-function, that search through the packages for the package that are needed to solve the conflicts. But this will probably not be included in the first beta-versions. Made some work on the user-interface. I also added a copyright-message, presented in the commandline-window during the startup of Purp.

19/12-1997
Added a function that gives the user the possibility to show dependencies for a packade, i.e. what a package provides and requires. Killed a bug that caused segmentation-faults when showing package-scripts. Yes, Purp is actually very stable now! I also added "About" as an option at the main menu. I think it's time for an official beta-version very soon now!

15/12-1997
Rebuilded much of the install, upgrade and uninstall-functions. They are now somewhat easier to understand and maintain. Added functions that check if an installation would cause a file-conflict, and if so warns the user. I have also made much of the work on the dependencies-checks. What a strange feeling! It's almost time for release!

10/12-1997
Made some work to make Purp compile under RedHat 5.0. Recoded the selection-functions, so Purp will work on the package marked by the cursor if no other packages are selected. Killed some very nasty bugs that caused segmentation faults when packages were repeatedly installed and removed. Made some visual changes to the info-panel. Added functions that locks the tty while rpmlib are working on packages, so that output from scripts and other background processes won't trash the tty.

5/11-1997
Finally some time for Purp! Well, I finally added support for upgrade! This means that Purp now can install, uninstall, and upgrade packages! What else do you need? Well, I still have to implement dependencies, but thats a rather small task. It's wonderful! Purp is almost in Beta-state!

5/10-1997
Changed the contents of the info-panel, so that it now shows only the interesting information. For example it isn't very interesting reading the buildhost for every package. If the user wants to know this there will be a dump-function that shows everything about a selected package.

Added a path-window that shows the full path for the currently selected package or group.

Added functions so you can navigate the hierarchy similliar to lynx-navigation, by the arrowkeys.

Also added functions that places the cursor on the previously selected group when going up in hierarchy, instead of placing it at the top of the list all the time.

As if this wasn't enough for a night I also made it impossible to change panels if one of the panels is empty, which is the case if the user haven't selected a path for uninstalled packages. Before it showed some information from my list-structure-dummy, which isn't very fun because most fields are empty or NULL.

29/9-1997
Added scrolling for the textwindow-class, for example used when viewing files in a package. Made some initial work on the functions for selecting directorypath for available packages.

Exam-period at the university, no time for Purp.. :-(

10/8-1997
Killed a bug that caused coredump when listing package-scripts. Added a counter that shows how many packages that are selected in each panel, and their size. Made some initial work on the update-functions. After last days bugfixes Purp seems to be very stable!

9/8-1997
Worked all night to find a very evil bug that made some packages not showing up in the panels.

8/8-1997
A lot of things have happened with Purp, even if it doesn't seem like that here. Purp are now able to both install and uninstall packages. The panels are updated dynamically, only showing packages that are installed, and packages that aren't. For debugging I added functions that write messages to a serial-device, so I can monitor Purp's actions. I can almost see a beta-version at the end of the long corridor!

28/7-1997
Started to work on Purp again, after a months vecation. Improved uninstallation so it checks whether an erased package exists in the available-list and if it does makes it show up in that panel.

25/6-1997
Wrote functions for uninstalling packages, it works fine! Also wrote functions for searching the RPM-database for the package that match a specified name-version-release string. The dependencies-functions for uninstallation is yet to be written. Also implemented the functions for listing files and scripts in packages.

14/6-1997
Rewrote big parts of the user-interface as a C++-class-hierarchy. This makes the user-interface easier to extend with new functions, and it's much better implemented than before.

12/6-1997
Ahh! Vacation for the summer, and lots of time for Purp! Made some major changes on Purp, so it now can be compiled with the C++-compilers. I really want to use C++ for the interface-programming, so the next work will be to recode the different parts of the interface as a class-hierarchy. This will really make the interface-development more easy and fast. I had to change some parts of the rpm-lib header-files, since they didn't work with C++-compillers, since there's a difference between the way C and C++ handles structs and typedefs. I will mail a patch to Peter Kroan, which is the developer of RPM, so he can fix this in coming versions of RPM-lib.

Exam-period at the university, no time for Purp.. :-(

12/5-1997
Programming goes on. Made some nice work on the text-viewer, made some initial work on the uninstall-functions, and worked on the install-function. I haven't implemented the functions that really do uninstall and install packages yet, I want to be sure that nothing can go wrong when I implement them. I realise that it would be wonderful with an extra machine, just for testing the program, it isn't very nice to test RPM-functions on your main-system.

11/5-1997
Changed the liststructure for the package-hierarchy so the memory for the description-field now are allocated exactly to the needed size, instead of having a fixed size. This decreased the needed memory for Purp by the half.

8/5-1997
Added some interactivity to the commandline, for example user-confirmation for uninstalling packages.

7/5-1997
Implemented a better solution for the functions that selects whether a package should be visible or not. Fixed some bugs that bugged the contents of the package-panels when scrolling page-up and page-down. Wasted some hours on implementation of a new list-stucture that was supposed to hold information about selected packages. When it was almost finished I got a wonderful idea! Until now all info about the packages was stored in a big hierarchy of linked elements, as a directory-structure. This is nice when the user moves around in the group-hierarchy, but very bad if you have yo search for a special package. The new idea was to have two kinds of linked lists to chain together the elements, the already implemented hierarchial list, and a new straight list. It works fine! I also made the very first work on the functions for package-installation. Maybe Purp will be able to do something useful soon?!

6/5-1997
For the moment Purp aren't able to do very much useful. I have implemented the major parts of the interface, with the two package-panels, the info-panel and the command-line. I have also implemented a progressbar which for example is useful when Purp reads and indexes available packages. A early version of a text-viewer are implemented, it is able to show texts, but hasn't got any scrolling yet. The text-viewer are for the moment only used for showing description-info about the packages. When Purp are started it reads all the installed packages, sorts them in the group-hierarchy and shows the result in the left panel. It also reads available packages, for the moment from a hardcoded path, since I haven't yet implemented any selection-dialog. The info-panel works fine, but will need some visual enhancements in the future. The command-line also needs some work. Internally there are some important things to do, most important is to trim the list-structures in which information about packages are stored. For the moment the structures uses fixed sizes for strings, which makes Purp eat memory like a hungry monster. I will of course do my best to fix this, but it hasn't the highest priority at this moment.



Last modified May 2002 by root <root@lysator.liu.se>.