profile XML ideas

John Arrowwood John.Arrowwood at merant.com
Thu Sep 7 09:33:40 PDT 2000


Here are some ideas...

As I understand it, XML is a "data structure description language" that
basically allows an arbitrarily complex data structure to be represented in
a standardized fashion.  It is NOT a scripting language.  On the other hand,
it is extensible...  But the problem you run into is that if you just embed
shell script commands into the xml, you aren't really utilizing xml, and you
might as well just use a bunch of shell scripts.  It also takes away from
the idea of "any type of back-end you want" because the back-end is then
forced to do things a certain way, specifically by delegating the execution
of the command to a shell script.

My thought was that we should go through every command in the book, and try
to come up with a "tag" that refers to and abstracts it, if reasonable.
Thus, you get tags for stuff like:

make_directory
unpack_archive
configure
make
make_install
set_environment
copy_file
create_symlink
create_file
append_file

You would probably want a "command" tag for special stuff, like the 'yes ""
| make config' command from the kernel source preparation section.

Plus you have the descriptive stuff, like

Package name
English Description
Version Information
Download URL
MD5 Checksum (or equivalent)
Other packages required to compile this one
Other packages required to use this one
...etc...

Here's an example...
  <define>
    <LFS> /mnt/lfs </LFS>
  </define>

  <package>
     <name>         bash                                     </name>
     <description>  Bourne-Again Shell                       </description>
     <help>         This is what provides the system prompt  </help>
     <type>         Required                                 </type>     
     <version>      2.04                                     </version>
     <pkgurl>       http://blah-blah-blah/                   </pkgurl>
     <checksum>     1234567890                               </checksum>

     <extract_to>   $LFS/usr/src                             </extract_to>
     <chroot>       $LFS                                     </chroot>
     <configure>    ./configure --prefix=/usr --with-ncurses </configure>
     <make>         make                                     </make>
     <make_install> make install                             </make_install>
     <copy><source> $LFS/usr/bin/bash    </source>
           <dest>   $LFS/bin             </dest>    </copy>
     <copy><source> $LFS/usr/bin/bashbug </source>
           <dest>   $LFS/bin             </dest>    </copy>
     <symlink><basedir> $LFS/bin </basedir>
              <source>  bash     </source>
              <dest>    sh       </dest>    </symlink>
  </package>
  
Now the example I just gave is based on one of my ideas, where only
individual commands are executed in the chroot'd environment.  But even if
that were not the case, the principle would remain.

Just something to think about...

-- John
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.linuxfromscratch.org/pipermail/alfs-discuss/attachments/20000907/01057839/attachment.html>


More information about the alfs-discuss mailing list