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>.