***** TODO LOG
1) Are "-" legal barcode characters? Fix the \w regex so
barcodes 1 slot-1 works.
Steve Lidie, sol0@lehigh.edu, 2002/07/02.
***** CHANGE LOG
***** 0.0.6 -> 1.0.0
1) Enhance barcode simulation.
Steve Lidie, sol0@lehigh.edu, 2002/06/12.
Current barcode simulation is OK for small auto-loaders whose media
content is rather static. Implement a new barcode scheme using a
Perl DBM file (NDBM?). This would allow dynamic updates as "juke"
manipulates the hardware. A storage media's fake barcode
information lasts from the time the media is loaded and the operator
enters the barcode until the media is unloaded.
********************* DONE, SOL, 2002/07/03 *****************************
Implemented using a SDBM database in version 0.0.6. Barcodes are set
either by clicking on a media slot in tkjuke, or the juke command line.
See the juke POD for details.
2) "juke loaded" must return a list of loaded barcodes.
Steve Lidie, sol0@lehigh.edu, 2002/06/12.
********************* DONE, SOL, 2002/07/03 *****************************
Fixed in 0.0.6.
***** 1.0.7, 2003/06/27
1) Add EJECT_BEFORE_UNLOAD configuration options to offline a tape prior to
unloading it.
2) JukeBox.pm now exports its configuration option via the hash $JUKE_CONFIG
rather than individual variables. The name of the old variables are the
hash keys.
3) Add a juke "config" option to display the configuration options and values.
4) Tested with mtx 1.2.17.
***** 2.0.1, 2003/07/07
1) Turn tkjuke into a master/slave program, embedding slave tkjuke windows
inside the master's NoteBook widget.
***** 2.0.6, 2003/07/11
1) To share messageBox calls, even a slave needs to initialize $mw_master.
2) $EJECT_BEFORE_UNLOAD - forgot to add it to juke's next/previous code.
3) POD-ify juke/tkjuke documentation.
***** 2.0.7, 2003/12/23
1) Fix JukeboxSlot Checkbutton -onvalue for Tk804.025.
***** 2.1.0, 2004/02/29
1) Add the mtx <=> atape compatibility layer for AIX.
2) Add a SIGHHUP handler to tkjuke that takes inventory of the jukebox and
updates its display. Used by unattended backup scripts to keep the
display accurate as they manipulate the device. The slave's PID is kept
in /tmp/tkjuke-slave-${device}.pid.
***** 2.1.1, 2004/03/10
1) atape-mtx: if a storage element is abnormal and full, no barcode is
available, so just mark full rather than abnormal so tkjuke can move it.
Do the same for data transfer elements.
2) Add a new juke command "refresh-tkjuke" that sends a SIGHUP to tkjuke.
juke uses this new feature to refresh tkjuke when media is moved.
***** 2.1.2, 2004/08/18
1) Add kluge code for an IBM ULT3582-TL used with Redhat Linux. The jukebox
and mtx do not talk properly and mtx doesn't recognize that the device
can transfer and has a mail slot. Set the variable $ULT3582_TL_on_Linux
to 1 in tkjuke. Then, from the jukebox front panel configure the mail
as a normal media slot rather than an import/export slot. tkjuke will
annotate DTE slot 1 as the mail slot rather than the last slot as it
would normally. No bump support is provided, however - the slot 1
annotation is just sugar to appease the operators ;)
2) Change the EJECT_BEFORE_UNLOAD default from 0 to "rewind" to prevent
media from being accidentally ejected if a drive is busy.
***** 2.1.3, 2006/03/09
1) Finally have a dual-drive jukebox - the same IBM ULT3582-TL as above.
Widen tkjuke's drive window so the optional scrollbar disappears.
2) Make some juke system commands non-fatal: if tar gets a media error, it
unloads the bad tape, then invokes the media-change script. But the juke
code first tries to unload the tape before unloading the stacker, and on
some systems unloading an already unloaded drive gives an error, thus
the media change fails. Make the drive-unload-before-a-cartridge-unload
non-fatal.
3) As noted above, juke does some non-jukebox things, i.e. it touches the
physical drives to work around vagrancies noted above, e.g. sometimes
a tape must be rewound/unloaded before an library operation is permitted.
Since I only had access to single drive libraries, the install prodcedure
only configured once drive. Now the install procedure asks for multiple
drives, and juke maps DTE numbers to physical drives in its commands.
4) Fixed a "one off" error due to multiple drives when plugging a loaded
DTE's barcode in an SE status line.
When all was said and done, less than 20 lines of source code needed changing.
Not bad considering I had no actual dual-drive hardware when writing the original
code - I simulated everything!
Here are some additional mods/changes:
5) juke commands barcodes, config and help are faster because they don't first
status the changer.
6) Added the contrib/ directory featuring tkreload2 and my Perl Makefile.PL
input file make.in.
***** 2.1.4, 2006/03/17
1) Save the results of juke's initial status. Subcommand processors use that
rather than statusing the library yet again - makes things run a tad faster.
2) juke's barcodes command with an empty barcode removes the entry from the
barcode DB.
Other than the above, this release is mainly to update other CPAN components
and otherwise fix errors reported by the CPAN indexer when I submitted 2.1.3.
3) So I removed Proc::killfam, Tk::ExecuteCommand and Tk::CollapsableFrame
from this distribution - you'll have to install them yourself.
***** 2.1.5, 2006/03/18
1) Ah ha! I knew something was odd, and I finally figured out the obscure bug.
"juke next [dte]" was mis-coded so it always used DTE 0, rather than the
DTE specified. But it was my wierd coding that was the problem, so the next
used the proper DTE and actually worked properly, but the tape-wait-ready
code always used /dev/nst0 rather than /dev/nst{$dte}.
2) Well, the 2.1.4 CPAN indexer showed my .pm files had no version, so now
they do. I hope this is the last rev for some time ...
***** 2.2.0, 2006/03/20
1) Added an optional DTE for "juke loaded".
2) Re-worked how juke handles tape-not-ready situations. The code used to be
internal to juke, now it's externalized into the program wait-tape-ready.
3) The contributed backup programs are now really multi-volume aware.
4) Output messages have the word "drive#" changed to "DTE#".
***** 2.2.1, 2007/07/20
1) "juke loaded" no longer quotes barcodes; the assumption is that there can be
no embedded spaces.
2) In order to save some screen area, remove the large Dismiss button at the
bottom of each jukebox page, and replace it with a small red close button
in the upper-left corner of the page, just like in Mac OS X.
3) Update AIX atape interface for Atape.driver 9.7.3.0.