lmi
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lmi] Creating end-user packages for msw


From: Greg Chicares
Subject: [lmi] Creating end-user packages for msw
Date: Tue, 22 Apr 2008 15:52:21 +0000
User-agent: Thunderbird 2.0.0.12 (Windows/20080213)

Packaging several monthly binary distributions for different end-
user groups has become stressful if not nightmarish. It must be
done in time for CDs to be received by field offices before the
first of each month; but it can't be done until crediting rates
are declared, which may be very close to the end of the month.
We have at most a few days, and often less. We've been using a
manual process with many steps, every single one of which must be
completed perfectly, because one misstep makes calamity of such
long labor.

Over the years, due to a reluctance to say anything but "Yes" to
any end-user suggestion, custom "features" have accumulated. It's
easy to add just one more twist to a manual process: if there are
already twenty-two steps, then why not twenty-three? The problem
is that, if each step has an X% chance of failing due to human
error, then the probability of success is (100 - X)% raised to
the twenty-third power. If X is even one percent, that means two
disasters per year. And the whole process has grown to take two
full person-days each month: such are the spurns that patient
merit of the unworthy takes.

'ChangeLog' for 20080421T1459Z mentions recent efforts toward
automating this process. I can't claim to understand every corner
of the labyrinth that's evolved, but I'm pretty sure that this
demolishes most of it, so it seemed good to expose it for testing
now. There are hooks for customization (use the source, Luke);
below is an example that exercises a couple of them. A handful of
scripts like this should suffice, AFAICT, so the next step is to
write them; then we can see whether we've put a quietus to these
troubles--or perchance additional hooks are needed?

I saved the script below as 'custom_fardel_0.sh', then tested it
as follows [comments indicated thus]:

  [run the script in your source directory]

/lmi/src/lmi[0]$./custom_fardel_0.sh
Generating product files.

All product files written.

Created 'my_package' archive in '/opt/lmi'.

  [let's see if it's there]

/lmi/src/lmi[0]$cd /opt/lmi/my_package
/opt/lmi/my_package[0]$ls -o ../my_package.tar.bz2
-rw-rw-rw- 1 chicares 16316659 Apr 22 14:54 ../my_package.tar.bz2

  [we've got an archive, and we've also got its contents in
  a directory; let's test the md5sums that lmi uses for
  run-time authentication]

/opt/lmi/my_package[0]$md5sum --check --status validated.md5

  [repeat that test with the 'md5sum' binary included in the
  archive--the source...Luke...use the source...]

/opt/lmi/my_package[0]$./md5sum --check --status validated.md5

  [see whether users can run it--what skin do you see? why?]

/opt/lmi/my_package[0]$./lmi_wx_shared.exe

=== 'custom_fardel_0.sh' begins ===
#!/bin/sh

# Example of an extra binary:
mkdir --parents /opt/lmi/path/to/
touch /opt/lmi/path/to/my_extra_binary.exe

# Example of an overridden file:

cat >/opt/lmi/path/to/configurable_settings.xml <<EOF
<?xml version="1.0"?>
<configurable_settings>
  <calculation_summary_columns/>
  <cgi_bin_log_filename>cgi_bin.log</cgi_bin_log_filename>
  <custom_input_filename>sample.ini</custom_input_filename>
  <custom_output_filename>sample.out</custom_output_filename>
  <default_input_filename>default.ill</default_input_filename>
  <libraries_to_preload/>
  <offer_hobsons_choice>0</offer_hobsons_choice>
  <print_directory>/var/opt/lmi/spool</print_directory>
  <skin_filename>skin_coli_boli.xrc</skin_filename>
  <spreadsheet_file_extension>.dif</spreadsheet_file_extension>
  <use_builtin_calculation_summary>1</use_builtin_calculation_summary>
  <xsl_fo_command>CMD /c /fop-0.20.5/fop</xsl_fo_command>
</configurable_settings>
EOF

make \
  extra_fardel_binaries=/opt/lmi/path/to/my_extra_binary.exe \
  extra_fardel_files=/opt/lmi/path/to/configurable_settings.xml \
  fardel_name=my_package \
  fardel
=== 'custom_fardel_0.sh' ends ===





reply via email to

[Prev in Thread] Current Thread [Next in Thread]