mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-08 04:27:37 +00:00
253 lines
5.9 KiB
Bash
Executable File
253 lines
5.9 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# The contents of this file are subject to the Netscape Public
|
|
# License Version 1.1 (the "License"); you may not use this file
|
|
# except in compliance with the License. You may obtain a copy of
|
|
# the License at http://www.mozilla.org/NPL/
|
|
#
|
|
# Software distributed under the License is distributed on an "AS
|
|
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
|
# implied. See the License for the specific language governing
|
|
# rights and limitations under the License.
|
|
#
|
|
# The Original Code is mozilla.org code.
|
|
#
|
|
# The Initial Developer of the Original Code is Netscape
|
|
# Communications Corporation. Portions created by Netscape are
|
|
# Copyright (C) 1998 Netscape Communications Corporation. All
|
|
# Rights Reserved.
|
|
#
|
|
# Contributor(s):
|
|
#
|
|
#
|
|
|
|
# The way this thing works:
|
|
#
|
|
# + A packages file is parsed. This file contains something
|
|
# that looks like this (note that spaces are illegal):
|
|
#
|
|
# +----------------------------------------------
|
|
# |nspr:nsprpub
|
|
# |core:build,db,xpcom,intl,js,modules/libutil,modules/security/freenav,modules/libpref,modules/libimg,modules/libjar,caps
|
|
# |network:netwerk
|
|
# |layout:htmlparser,gfx,dom,view,widget/timer,widget,layout,webshell,editor,modules/plugin
|
|
# |xpinstall:xpinstall
|
|
# |profile:profile
|
|
# |xptoolkit:xpfe,rdf
|
|
# |cookie:extensions/cookie
|
|
# |wallet:extensions/wallet
|
|
# |mailnews:mailnews
|
|
# +----------------------------------------------
|
|
#
|
|
# + For each package, a list of modules corresponding to that
|
|
# package is parsed. Each modules corresponds to a
|
|
# directory somewhere in a mozilla build tree - usually
|
|
# the toplevel ones (ie, layout, nsprpub, xpcom) but not
|
|
# always (ie, extensions/wallet)
|
|
#
|
|
# + For each module, print-module-filelist.sh is invoked.
|
|
# The output of that is parsed and converted from the
|
|
# crazy mozilla install hierarchy to something that
|
|
# makes sense on a linux box.
|
|
#
|
|
# For example:
|
|
#
|
|
# bin/components/libraptorhtml.so
|
|
#
|
|
# becomes
|
|
#
|
|
# %{prefix}/lib/mozilla/components/libraptorhtml.so
|
|
#
|
|
# + Also, this script determines which files belong in
|
|
# a devel package. For example, "include/*" and "idl/*"
|
|
|
|
name=generate-package-info.sh
|
|
|
|
if [ $# -lt 4 ]
|
|
then
|
|
echo
|
|
echo "Usage: $name package-list module-list-dir outdir mozdir"
|
|
echo
|
|
exit 1
|
|
fi
|
|
|
|
package_list=$1
|
|
module_list_dir=$2
|
|
outdir=$3
|
|
mozdir=$4
|
|
|
|
if [ ! -f $package_list ]
|
|
then
|
|
echo
|
|
echo "$name: Cant access package file $package_list."
|
|
echo
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -d $module_list_dir ]
|
|
then
|
|
echo
|
|
echo "$name: Cant access module list dir $package_list."
|
|
echo
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -d $outdir ]
|
|
then
|
|
echo
|
|
echo "$name: Cant access outdir $outdir."
|
|
echo
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -d $mozdir ]
|
|
then
|
|
echo
|
|
echo "$name: Cant access mozdir $mozdir."
|
|
echo
|
|
exit 1
|
|
fi
|
|
|
|
rm -rf $outdir/*
|
|
|
|
packages=`cat $package_list | grep -v -e "^#.*$" | grep -v -e "^[ \t]*$"`
|
|
|
|
for p in $packages
|
|
do
|
|
package=`echo $p | awk -F":" '{ print $1; }'`
|
|
|
|
modules=`echo $p | awk -F":" '{ print $2; }' | tr "," " "`
|
|
|
|
file_list=$outdir/mozilla-$package-file-list.txt
|
|
file_list_devel=$outdir/mozilla-$package-devel-file-list.txt
|
|
|
|
tmp_raw=/tmp/raw-list.$$.tmp
|
|
|
|
tmp_file_list=/tmp/file-list.$$.tmp
|
|
tmp_file_list_devel=/tmp/file-list-devel.$$.tmp
|
|
|
|
tmp_dir_list=/tmp/dir-list.$$.tmp
|
|
tmp_dir_list_devel=/tmp/dir-list-devel.$$.tmp
|
|
|
|
# echo "package=$package"
|
|
# echo "modules=$modules"
|
|
# echo "file_list=$file_list"
|
|
# echo "file_list_devel=$file_list_devel"
|
|
# echo "#################"
|
|
|
|
rm -f $tmp_raw $file_list $file_list_devel
|
|
rm -f $tmp_file_list $tmp_file_list_devel
|
|
rm -f $tmp_dir_list $tmp_dir_list_devel
|
|
|
|
touch $tmp_raw $file_list $file_list_devel
|
|
touch $tmp_file_list $tmp_file_list_devel
|
|
touch $tmp_dir_list $tmp_dir_list_devel
|
|
|
|
print_cmd=$mozdir/build/package/rpm/print-module-filelist.sh
|
|
|
|
here=`pwd`
|
|
|
|
# Write the raw file list
|
|
for m in $modules
|
|
do
|
|
cd $mozdir/$m
|
|
$print_cmd >> $tmp_raw
|
|
done
|
|
|
|
cd $here
|
|
|
|
# Munge the raw list into the file list
|
|
for i in `cat $tmp_raw`
|
|
do
|
|
prefix=`echo $i | awk -F"/" '{ print $1; }'`
|
|
|
|
case "$prefix"
|
|
in
|
|
# dirs
|
|
DIR:*)
|
|
dir=`echo $i | cut -b5-`
|
|
|
|
case "$dir"
|
|
in
|
|
include*)
|
|
echo $dir >> $tmp_dir_list_devel
|
|
;;
|
|
|
|
*)
|
|
prefix2=`echo $dir | awk -F"/" '{ print $2; }'`
|
|
|
|
case "$prefix2"
|
|
in
|
|
# Cut out the "bin/" from these
|
|
res|chrome|defaults)
|
|
echo $dir | cut -b5- >> $tmp_dir_list
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
;;
|
|
|
|
##
|
|
## XXX: This one needs to be smarter and catch more devel only
|
|
## stuff. For example, the gecko viewer and all its resources
|
|
## should go in the devel package. This would in turn make the
|
|
## regular package smaller.
|
|
##
|
|
|
|
# include, idl, lib
|
|
include|idl|lib)
|
|
echo $i >> $tmp_file_list_devel
|
|
;;
|
|
|
|
# bin the evil
|
|
bin)
|
|
prefix2=`echo $i | awk -F"/" '{ print $2; }'`
|
|
|
|
case "$prefix2"
|
|
in
|
|
# Cut out the "bin/" from these
|
|
components|res|chrome|defaults|netscape.cfg)
|
|
echo $i | cut -b5- >> $tmp_file_list
|
|
;;
|
|
|
|
# whatever else in "bin/"
|
|
*)
|
|
# Move special files in "bin/" around
|
|
base=`basename $i`
|
|
|
|
case "$base"
|
|
in
|
|
# Mozilla brillantly puts .so files in "bin/" bleh
|
|
*.so)
|
|
echo "lib/$base" >> $tmp_file_list
|
|
;;
|
|
|
|
*)
|
|
echo $i >> $tmp_file_list
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
;;
|
|
|
|
# whatever else
|
|
*)
|
|
echo $i >> $tmp_file_list
|
|
;;
|
|
esac
|
|
|
|
done
|
|
|
|
# Spit out sorted file lists
|
|
cat $tmp_dir_list | sort | uniq | awk '{ printf("%%dir %%{prefix}/lib/mozilla/%s\n" , $0); }' >> $file_list
|
|
|
|
cat $tmp_file_list | sort | uniq | awk '{ printf("%%{prefix}/lib/mozilla/%s\n" , $0); }' >> $file_list
|
|
|
|
cat $tmp_dir_list_devel | sort | uniq | awk '{ printf("%%dir %%{prefix}/lib/mozilla/%s\n" , $0); }' >> $file_list_devel
|
|
|
|
cat $tmp_file_list_devel | sort | uniq | awk '{ printf("%%{prefix}/lib/mozilla/%s\n" , $0); }' >> $file_list_devel
|
|
|
|
# Cleanup
|
|
rm -f $tmp_raw $tmp_file_list $tmp_file_list_devel $tmp_dir_list $tmp_dir_list_devel
|
|
done
|