[syslinux] Library_modules (list of & wiki write permissions)

Frank Lin PIAT fpiat at klabs.be
Sat Aug 23 18:54:20 PDT 2014


Hello,

I poked a little bit to extract the list of modules dependencies in
Syslinux v6 (see below). I have attached a bash script that generate a
nice table from the tarball. The output can either be an ASCII table, or
wiki markup, typically for the page Library_modules[1].

I am not in the wiki Editor group, so I can't put that in the wiki.

anyway, here's an updated dependency tree for 6.02:

|chain.c32        |com32/chain            |  libutil.c32 libcom32.c32 
|complex.c32      |com32/cmenu            |  libmenu.c32 libcom32.c32 
|display.c32      |com32/cmenu            |  libmenu.c32 libcom32.c32 
|libmenu.c32      |com32/cmenu/libmenu    |  libutil.c32 libcom32.c32 
|simple.c32       |com32/cmenu            |  libmenu.c32 libcom32.c32 
|test2.c32        |com32/cmenu            |  libmenu.c32 libcom32.c32 
|test.c32         |com32/cmenu            |  libmenu.c32 libcom32.c32 
|ldlinux.c32      |com32/elflink/ldlinux  |   
|ldlinux.e32      |com32/elflink/ldlinux  |   
|ldlinux.e64      |com32/elflink/ldlinux  |   
|gfxboot.c32      |com32/gfxboot          |  libcom32.c32 
|libgpl.c32       |com32/gpllib           |   
|hdt.c32          |com32/hdt              |  libutil.c32 libgpl.c32 libcom32.c32 libmenu.c32 
|libcom32.c32     |com32/lib              |   
|libutil.c32      |com32/libutil          |   
|liblua.c32       |com32/lua/src          |   
|lua.c32          |com32/lua/src          |  liblua.c32 libgpl.c32 libcom32.c32 
|mboot.c32        |com32/mboot            |  libcom32.c32 
|menu.c32         |com32/menu             |  libutil.c32 
|vesamenu.c32     |com32/menu             |  libutil.c32 libcom32.c32 
|cat.c32          |com32/modules          |   
|cmd.c32          |com32/modules          |  libcom32.c32 
|config.c32       |com32/modules          |  libcom32.c32 
|cptime.c32       |com32/modules          |  libutil.c32 
|cpuid.c32        |com32/modules          |   
|cpuidtest.c32    |com32/modules          |  libgpl.c32 
|debug.c32        |com32/modules          |   
|disk.c32         |com32/modules          |  libgpl.c32 
|dmitest.c32      |com32/modules          |  libgpl.c32 
|elf.c32          |com32/modules          |  libcom32.c32 
|ethersel.c32     |com32/modules          |  libcom32.c32 
|gpxecmd.c32      |com32/modules          |  libcom32.c32 
|hexdump.c32      |com32/modules          |  libcom32.c32 
|host.c32         |com32/modules          |  libcom32.c32 
|ifcpu64.c32      |com32/modules          |  libcom32.c32 
|ifcpu.c32        |com32/modules          |  libutil.c32 libgpl.c32 libcom32.c32 
|ifmemdsk.c32     |com32/modules          |  libcom32.c32 
|ifplop.c32       |com32/modules          |  libcom32.c32 
|kbdmap.c32       |com32/modules          |  libcom32.c32 
|kontron_wdt.c32  |com32/modules          |  libcom32.c32 
|linux.c32        |com32/modules          |  libcom32.c32 
|ls.c32           |com32/modules          |   
|meminfo.c32      |com32/modules          |   
|pcitest.c32      |com32/modules          |  libcom32.c32 
|pmload.c32       |com32/modules          |  libcom32.c32 
|poweroff.c32     |com32/modules          |   
|prdhcp.c32       |com32/modules          |  libutil.c32 libcom32.c32 
|pwd.c32          |com32/modules          |   
|pxechn.c32       |com32/modules          |  libutil.c32 libcom32.c32 
|reboot.c32       |com32/modules          |  libcom32.c32 
|sanboot.c32      |com32/modules          |  libcom32.c32 
|sdi.c32          |com32/modules          |  libcom32.c32 
|vesainfo.c32     |com32/modules          |   
|vpdtest.c32      |com32/modules          |  libgpl.c32 
|whichsys.c32     |com32/modules          |  libcom32.c32 
|zzjson.c32       |com32/modules          |  libgpl.c32 
|rosh.c32         |com32/rosh             |  libutil.c32 libcom32.c32 
|advdump.c32      |com32/samples          |   
|entrydump.c32    |com32/samples          |   
|fancyhello.c32   |com32/samples          |  libutil.c32 
|hello.c32        |com32/samples          |   
|keytest.c32      |com32/samples          |  libutil.c32 
|localboot.c32    |com32/samples          |  libcom32.c32 
|resolv.c32       |com32/samples          |   
|serialinfo.c32   |com32/samples          |   
|sysdump.c32      |com32/sysdump          |  libcom32.c32 



[1] http://www.syslinux.org/wiki/index.php?title=Library_modules



-------------- next part --------------
#!/bin/bash

# syslinux_module_deps - show syslinux module dependencies.
# version 0.1
# license MIT
# Copyright: Frank lin Piat <fpiat at klabs.be>
#
# Known bugs:
#  * on amd64 architecture: ldd don't show module deps for i386.


set -e

fwtype="bios efi32 efi64"

# bash hack here: no recursive associative arrays...
# so we declares variables based on the name in $fwtype, thanks to "eval".
for fw in $fwtype ; do
	eval declare -A $fw
done


## Extraction libraries dependencies
extract() {
	for fw in $fwtype ; do

		for f in $(find $fw -name '*.c32' -o -name '*.e[36][24]' ); do
			bf=$(echo  $f | grep -o "com32/.*")
			eval $fw[$bf]=\"$( ldd $f | grep ' => ' | awk '{print $1}' | xargs)\"
		done
	done
	modules=$(for fw in $fwtype ; do eval echo \${!$fw[@]} | tr " " '\n'  ; done | sort -u )
}


## Print for Mediawiki page
printwiki() {
	echo '{| class="wikitable sortable" border="1" cellpadding="10" cellspacing="0" bgcolor="#f9f9f9" style="padding: 1em; border: 1px dashed darkgray;"'
	echo '|+ <code>Library modules c32 dependencies:</code>'
	echo '! UPSTREAM PATH '
	echo '! MODULE '
	echo '! class="unsortable" | LIBRARY DEPENDENCY'
	echo '|-'
	for module in $modules ; do
		deps=$(for fw in $fwtype ; do
			eval echo \${$fw[$module]} ; done | tr '\n' ' ' )
			echo "|-"
			echo "| [[$(basename $module)]]"
			echo "| $(dirname $module)"
			(echo $deps | sed -e '1i|' -e 's, , <br /> ,' | xargs )
		done
	echo "|}"
}

## Print as ASCI^wUTF^wASCII table
printtable() {
	echo "============="
	for module in $modules ; do
		deps=$(for fw in $fwtype ; do eval echo \${$fw[$module]} ; done | tr '\n' ' ' )
		#echo "|$(basename $module)	| $(dirname $module | grep -o "com32/.*" )	| $deps"
	printf "|%-17s|%-23s|%s\n" "$(basename $module)" "$(dirname $module | grep -o "com32/.*" )" "$deps"
	done
}


## Assuming you fetched syslinux tarball locally:
# ver=syslinux-6.02
# cd /tmp
# wget https://www.kernel.org/pub/linux/utils/boot/syslinux/${ver}.tar.gz
# tar -zxvf ${ver}.tar.gz
# cd ${ver}

extract
if [ "$1" = "wiki" ]; then
	printwiki
else
	printtable
fi


More information about the Syslinux mailing list