Commit a3c7b569 authored by Kjell Ahlstedt's avatar Kjell Ahlstedt

tools/gen_scripts: Update for non-source-dir builds

Most modules (e.g. glib) can be built in a directory separated from the
source directory. Update the scripts that generate .defs and doc.xml files
to handle that. See gtkmm!11.
The environment variable JHBUILD_SOURCES is not used any more.
Instead the environment variables GMMPROC_GEN_SOURCE_DIR and
GMMPROC_GEN_BUILD_DIR are read. See comments in init_generate.sh.
parent d35f936e
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
# Regenerate all glibmm's docs.xml and .defs files # Regenerate all glibmm's docs.xml and .defs files
cd "$(dirname "$0")"
./glib_generate_docs.sh ./glib_generate_docs.sh
./glib_generate_enums.sh ./glib_generate_enums.sh
./glib_generate_extra_defs.sh ./glib_generate_extra_defs.sh
......
#!/bin/bash #!/bin/bash
# Note that JHBUILD_SOURCES should be defined to contain the path to the root # The script assumes that it resides in the tools/gen_scripts directory and
# of the jhbuild sources. Also the script assumes that it resides in the # the XML file will be placed in gio/src.
# tools/gen_scripts directory and the XML file will be placed in glib/src.
if [ -z "$JHBUILD_SOURCES" ]; then source "$(dirname "$0")/init_generate.sh"
echo -e "JHBUILD_SOURCES must contain the path to the jhbuild sources."
exit 1;
fi
PREFIX="$JHBUILD_SOURCES" out_dir="$root_dir/gio/src"
ROOT_DIR="$(dirname "$0")/../.."
OUT_DIR="$ROOT_DIR/gio/src"
PARAMS="--with-properties --no-recursion" params="--with-properties --no-recursion"
for dir in "$PREFIX"/glib/gio; do for dir in "$source_prefix/gio" "$build_prefix/gio"; do
PARAMS="$PARAMS -s $dir" params="$params -s $dir"
done done
# Exclude $build_prefix/gio/xdp-dbus.c.
params="$params -x $build_prefix/gio/xdp-dbus.c"
DOCEXTRACT_TO_XML_PY="$JHBUILD_SOURCES/glibmm/tools/defs_gen/docextract_to_xml.py" "$gen_docs" $params > "$out_dir/gio_docs.xml"
$DOCEXTRACT_TO_XML_PY $PARAMS > "$OUT_DIR"/gio_docs.xml
#!/bin/bash #!/bin/bash
# Note that JHBUILD_SOURCES should be defined to contain the path to the root # The script assumes that it resides in the tools/gen_scripts directory and
# of the jhbuild sources. The script assumes that it resides in the # the defs file will be placed in gio/src.
# tools/gen_scripts directory and the defs file will be placed in gio/src.
# To update the gio_enums.defs file: # To update the gio_enums.defs file:
# 1. ./gio_generate_enums.sh # 1. ./gio_generate_enums.sh
...@@ -17,30 +16,26 @@ ...@@ -17,30 +16,26 @@
# 3. ./gio_generate_enums.sh --make-patch # 3. ./gio_generate_enums.sh --make-patch
# 4. Like step 2 when updating only the gio_enums.defs file. # 4. Like step 2 when updating only the gio_enums.defs file.
if [ -z "$JHBUILD_SOURCES" ]; then source "$(dirname "$0")/init_generate.sh"
echo -e "JHBUILD_SOURCES must contain the path to the jhbuild sources."
exit 1;
fi
PREFIX="$JHBUILD_SOURCES/glib" out_dir="$root_dir/gio/src"
ROOT_DIR="$(dirname "$0")/../.." out_file=gio_enums.defs
OUT_DIR="$ROOT_DIR/gio/src" out_dir_file="$out_dir"/$out_file
OUT_FILE=gio_enums.defs
OUT_DIR_FILE="$OUT_DIR"/$OUT_FILE
shopt -s extglob # Enable extended pattern matching shopt -s extglob # Enable extended pattern matching
shopt -s nullglob # Skip a filename pattern that matches no file
if [ $# -eq 0 ] if [ $# -eq 0 ]
then then
ENUM_PL="$JHBUILD_SOURCES/glibmm/tools/enum.pl"
# Process files whose names end with .h, but not with private.h. # Process files whose names end with .h, but not with private.h.
$ENUM_PL "$PREFIX"/gio/!(*private).h > "$OUT_DIR_FILE" # Exclude $build_prefix/gio/xdp-dbus.h.
"$gen_enums" "$source_prefix"/gio/!(*private).h "$build_prefix"/gio/!(*private|xdp-dbus).h > "$out_dir_file"
# patch version 2.7.5 does not like directory names. # patch version 2.7.5 does not like directory names.
cd "$OUT_DIR" cd "$out_dir"
PATCH_OPTIONS="--backup --version-control=simple --suffix=.orig" patch_options="--backup --version-control=simple --suffix=.orig"
patch $PATCH_OPTIONS $OUT_FILE $OUT_FILE.patch patch $patch_options $out_file $out_file.patch
elif [ "$1" = "--make-patch" ] elif [ "$1" = "--make-patch" ]
then then
diff --unified=5 "$OUT_DIR_FILE".orig "$OUT_DIR_FILE" > "$OUT_DIR_FILE".patch diff --unified=5 "$out_dir_file".orig "$out_dir_file" > "$out_dir_file".patch
else else
echo "Usage: $0 [--make-patch]" echo "Usage: $0 [--make-patch]"
exit 1 exit 1
......
...@@ -16,22 +16,22 @@ ...@@ -16,22 +16,22 @@
# 3. ./gio_generate_extra_defs.sh --make-patch # 3. ./gio_generate_extra_defs.sh --make-patch
# 4. Like step 2 when updating only the gio_signals.defs file. # 4. Like step 2 when updating only the gio_signals.defs file.
ROOT_DIR="$(dirname "$0")/../.." source "$(dirname "$0")/init_generate.sh"
GEN_DIR="$ROOT_DIR/tools/extra_defs_gen"
OUT_DIR="$ROOT_DIR/gio/src" out_dir="$root_dir/gio/src"
OUT_FILE=gio_signals.defs out_file=gio_signals.defs
OUT_DIR_FILE="$OUT_DIR"/$OUT_FILE out_dir_file="$out_dir"/$out_file
if [ $# -eq 0 ] if [ $# -eq 0 ]
then then
"$GEN_DIR"/generate_defs_gio > "$OUT_DIR_FILE" "$extra_defs_gen_dir"/generate_defs_gio > "$out_dir_file"
# patch version 2.7.5 does not like directory names. # patch version 2.7.5 does not like directory names.
cd "$OUT_DIR" cd "$out_dir"
PATCH_OPTIONS="--backup --version-control=simple --suffix=.orig" patch_options="--backup --version-control=simple --suffix=.orig"
patch $PATCH_OPTIONS $OUT_FILE $OUT_FILE.patch patch $patch_options $out_file $out_file.patch
elif [ "$1" = "--make-patch" ] elif [ "$1" = "--make-patch" ]
then then
diff --unified=5 "$OUT_DIR_FILE".orig "$OUT_DIR_FILE" > "$OUT_DIR_FILE".patch diff --unified=5 "$out_dir_file".orig "$out_dir_file" > "$out_dir_file".patch
else else
echo "Usage: $0 [--make-patch]" echo "Usage: $0 [--make-patch]"
exit 1 exit 1
......
#!/bin/bash #!/bin/bash
# Note that JHBUILD_SOURCES should be defined to contain the path to the root # The script assumes that it resides in the tools/gen_scripts directory and
# of the jhbuild sources. The script assumes that it resides in the # the defs file will be placed in gio/src.
# tools/gen_scripts directory and the defs file will be placed in glib/src.
if [ -z "$JHBUILD_SOURCES" ]; then source "$(dirname "$0")/init_generate.sh"
echo -e "JHBUILD_SOURCES must contain the path to the jhbuild sources."
exit 1;
fi
PREFIX="$JHBUILD_SOURCES/glib" out_dir="$root_dir/gio/src"
ROOT_DIR="$(dirname "$0")/../.."
OUT_DIR="$ROOT_DIR/gio/src"
shopt -s extglob # Enable extended pattern matching shopt -s extglob # Enable extended pattern matching
H2DEF_PY="$JHBUILD_SOURCES/glibmm/tools/defs_gen/h2def.py" shopt -s nullglob # Skip a filename pattern that matches no file
# Process files whose names end with .h, but not with private.h. # Process files whose names end with .h, but not with private.h.
$H2DEF_PY "$PREFIX"/gio/!(*private).h > "$OUT_DIR"/gio_methods.defs # Exclude $build_prefix/gio/xdp-dbus.h.
#patch "$OUT_DIR"/gio_methods.defs "$OUT_DIR"/gio_methods.defs.patch "$gen_methods" "$source_prefix"/gio/!(*private).h "$build_prefix"/gio/!(*private|xdp-dbus).h > "$out_dir"/gio_methods.defs
#!/bin/bash #!/bin/bash
# Note that JHBUILD_SOURCES should be defined to contain the path to the root # The script assumes that it resides in the tools/gen_scripts directory and
# of the jhbuild sources. The script assumes that it resides in the # the XML file will be placed in glib/src.
# tools/gen_scripts directory and the XML file will be placed in glib/src.
if [ -z "$JHBUILD_SOURCES" ]; then source "$(dirname "$0")/init_generate.sh"
echo -e "JHBUILD_SOURCES must contain the path to the jhbuild sources."
exit 1;
fi
PREFIX="$JHBUILD_SOURCES" out_dir="$root_dir/glib/src"
ROOT_DIR="$(dirname "$0")/../.."
OUT_DIR="$ROOT_DIR/glib/src"
PARAMS="--with-properties --no-recursion" params="--with-properties --no-recursion"
for dir in "$PREFIX"/glib/{glib,glib/deprecated,gmodule,gobject,gthread}; do for dir in "$source_prefix"/{glib,glib/deprecated,gmodule,gobject,gthread} \
PARAMS="$PARAMS -s $dir" "$build_prefix"/{glib,gmodule,gobject,gthread}; do
params="$params -s $dir"
done done
DOCEXTRACT_TO_XML_PY="$JHBUILD_SOURCES/glibmm/tools/defs_gen/docextract_to_xml.py" "$gen_docs" $params > "$out_dir/glib_docs.xml"
$DOCEXTRACT_TO_XML_PY $PARAMS > "$OUT_DIR/glib_docs.xml"
#!/bin/bash #!/bin/bash
# Note that JHBUILD_SOURCES should be defined to contain the path to the root # The script assumes that it resides in the tools/gen_scripts directory and
# of the jhbuild sources. The script assumes that it resides in the # the defs files will be placed in glib/src.
# tools/gen_scripts directory and the defs files will be placed in glib/src.
# To update the g[lib|module|object]_enums.defs files: # To update the g[lib|module|object]_enums.defs files:
# 1. ./glib_generate_enums.sh # 1. ./glib_generate_enums.sh
...@@ -17,31 +16,27 @@ ...@@ -17,31 +16,27 @@
# 3. ./glib_generate_enums.sh --make-patch # 3. ./glib_generate_enums.sh --make-patch
# 4. Like step 2 when updating only the g[lib|module|object]_enums.defs files. # 4. Like step 2 when updating only the g[lib|module|object]_enums.defs files.
if [ -z "$JHBUILD_SOURCES" ]; then source "$(dirname "$0")/init_generate.sh"
echo -e "JHBUILD_SOURCES must contain the path to the jhbuild sources."
exit 1;
fi
PREFIX="$JHBUILD_SOURCES/glib" out_dir="$root_dir/glib/src"
ROOT_DIR="$(dirname "$0")/../.."
OUT_DIR="$ROOT_DIR/glib/src"
shopt -s extglob # Enable extended pattern matching shopt -s extglob # Enable extended pattern matching
shopt -s nullglob # Skip a filename pattern that matches no file
if [ $# -eq 0 ] if [ $# -eq 0 ]
then then
ENUM_PL="$JHBUILD_SOURCES/glibmm/tools/enum.pl"
# Process files whose names end with .h, but not with private.h. # Process files whose names end with .h, but not with private.h.
$ENUM_PL "$PREFIX"/glib/!(*private).h "$PREFIX"/glib/deprecated/!(*private).h > "$OUT_DIR"/glib_enums.defs "$gen_enums" "$source_prefix"/glib/!(*private).h "$source_prefix"/glib/deprecated/!(*private).h \
$ENUM_PL "$PREFIX"/gmodule/!(*private).h > "$OUT_DIR"/gmodule_enums.defs "$build_prefix"/glib/!(*private).h "$build_prefix"/glib/deprecated/!(*private).h > "$out_dir"/glib_enums.defs
$ENUM_PL "$PREFIX"/gobject/!(*private).h > "$OUT_DIR"/gobject_enums.defs "$gen_enums" "$source_prefix"/gmodule/!(*private).h "$build_prefix"/gmodule/!(*private).h > "$out_dir"/gmodule_enums.defs
"$gen_enums" "$source_prefix"/gobject/!(*private).h "$build_prefix"/gobject/!(*private).h > "$out_dir"/gobject_enums.defs
# patch version 2.7.5 does not like directory names. # patch version 2.7.5 does not like directory names.
cd "$OUT_DIR" cd "$out_dir"
PATCH_OPTIONS="--backup --version-control=simple --suffix=.orig" patch_options="--backup --version-control=simple --suffix=.orig"
patch $PATCH_OPTIONS glib_enums.defs glib_enums.defs.patch patch $patch_options glib_enums.defs glib_enums.defs.patch
elif [ "$1" = "--make-patch" ] elif [ "$1" = "--make-patch" ]
then then
OUT_DIR_FILE="$OUT_DIR"/glib_enums.defs out_dir_file="$out_dir"/glib_enums.defs
diff --unified=5 "$OUT_DIR_FILE".orig "$OUT_DIR_FILE" > "$OUT_DIR_FILE".patch diff --unified=5 "$out_dir_file".orig "$out_dir_file" > "$out_dir_file".patch
else else
echo "Usage: $0 [--make-patch]" echo "Usage: $0 [--make-patch]"
exit 1 exit 1
......
...@@ -3,8 +3,8 @@ ...@@ -3,8 +3,8 @@
# This script assumes that it resides in the tools/gen_scripts directory and # This script assumes that it resides in the tools/gen_scripts directory and
# the defs file will be placed in glib/src. # the defs file will be placed in glib/src.
ROOT_DIR="$(dirname "$0")/../.." source "$(dirname "$0")/init_generate.sh"
GEN_DIR="../extra_defs_gen"
OUT_DIR="$ROOT_DIR/glib/src"
"$GEN_DIR"/generate_defs_glib > "$OUT_DIR"/glib_signals.defs out_dir="$root_dir/glib/src"
"$extra_defs_gen_dir"/generate_defs_glib > "$out_dir"/glib_signals.defs
#!/bin/bash #!/bin/bash
# Note that JHBUILD_SOURCES should be defined to contain the path to the root # The script assumes it resides in the tools/gen_scripts directory and
# of the jhbuild sources. The script assumes it resides in the # the defs files will be placed in glib/src.
# tools/gen_scripts directory and the defs files will be placed in glib/src.
# To update the g[lib|module|object]_functions.defs files: # To update the g[lib|module|object]_functions.defs files:
# 1. ./glib_generate_methods.sh # 1. ./glib_generate_methods.sh
...@@ -17,31 +16,27 @@ ...@@ -17,31 +16,27 @@
# 3. ./glib_generate_methods.sh --make-patch # 3. ./glib_generate_methods.sh --make-patch
# 4. Like step 2 when updating only the g[lib|module|object]_functions.defs files. # 4. Like step 2 when updating only the g[lib|module|object]_functions.defs files.
if [ -z "$JHBUILD_SOURCES" ]; then source "$(dirname "$0")/init_generate.sh"
echo -e "JHBUILD_SOURCES must contain the path to the jhbuild sources."
exit 1;
fi
PREFIX="$JHBUILD_SOURCES/glib" out_dir="$root_dir/glib/src"
ROOT_DIR="$(dirname "$0")/../.."
OUT_DIR="$ROOT_DIR/glib/src"
shopt -s extglob # Enable extended pattern matching shopt -s extglob # Enable extended pattern matching
shopt -s nullglob # Skip a filename pattern that matches no file
if [ $# -eq 0 ] if [ $# -eq 0 ]
then then
H2DEF_PY="$JHBUILD_SOURCES/glibmm/tools/defs_gen/h2def.py"
# Process files whose names end with .h, but not with private.h. # Process files whose names end with .h, but not with private.h.
$H2DEF_PY "$PREFIX"/glib/!(*private).h "$PREFIX"/glib/deprecated/!(*private).h > "$OUT_DIR"/glib_functions.defs "$gen_methods" "$source_prefix"/glib/!(*private).h "$source_prefix"/glib/deprecated/!(*private).h \
$H2DEF_PY "$PREFIX"/gmodule/!(*private).h > "$OUT_DIR"/gmodule_functions.defs "$build_prefix"/glib/!(*private).h "$build_prefix"/glib/deprecated/!(*private).h > "$out_dir"/glib_functions.defs
$H2DEF_PY "$PREFIX"/gobject/!(*private).h > "$OUT_DIR"/gobject_functions.defs "$gen_methods" "$source_prefix"/gmodule/!(*private).h "$build_prefix"/gmodule/!(*private).h > "$out_dir"/gmodule_functions.defs
"$gen_methods" "$source_prefix"/gobject/!(*private).h "$build_prefix"/gobject/!(*private).h > "$out_dir"/gobject_functions.defs
# patch version 2.7.5 does not like directory names. # patch version 2.7.5 does not like directory names.
cd "$OUT_DIR" cd "$out_dir"
PATCH_OPTIONS="--backup --version-control=simple --suffix=.orig" patch_options="--backup --version-control=simple --suffix=.orig"
patch $PATCH_OPTIONS glib_functions.defs glib_functions.defs.patch patch $patch_options glib_functions.defs glib_functions.defs.patch
elif [ "$1" = "--make-patch" ] elif [ "$1" = "--make-patch" ]
then then
OUT_DIR_FILE="$OUT_DIR"/glib_functions.defs out_dir_file="$out_dir"/glib_functions.defs
diff --unified=5 "$OUT_DIR_FILE".orig "$OUT_DIR_FILE" > "$OUT_DIR_FILE".patch diff --unified=5 "$out_dir_file".orig "$out_dir_file" > "$out_dir_file".patch
else else
echo "Usage: $0 [--make-patch]" echo "Usage: $0 [--make-patch]"
exit 1 exit 1
......
#!/bin/bash
# This file is part of glibmm.
# Initializes some variables for the scripts that generate docs and defs files.
# Not intented to be called directly from the command line.
# Global environment variables:
# GMMPROC_GEN_SOURCE_DIR Top directory where source files are searched for.
# Default value: $(dirname "$0")/../../..
# i.e. 3 levels above this file.
# GMMPROC_GEN_BUILD_DIR Top directory where built files are searched for.
# Default value: $GMMPROC_GEN_SOURCE_DIR
#
# If you use jhbuild, you can set these environment variables equal to jhbuild's
# configuration variables checkoutroot and buildroot, respectively.
# Usually you can leave GMMPROC_GEN_SOURCE_DIR undefined.
# If you have set buildroot=None, GMMPROC_GEN_BUILD_DIR can also be undefined.
# Root directory of glibmm source files.
root_dir="$(dirname "$0")/../.."
# Where to search for source files.
if [ -z "$GMMPROC_GEN_SOURCE_DIR" ]; then
GMMPROC_GEN_SOURCE_DIR="$root_dir/.."
fi
# Where to search for built files.
if [ -z "$GMMPROC_GEN_BUILD_DIR" ]; then
GMMPROC_GEN_BUILD_DIR="$GMMPROC_GEN_SOURCE_DIR"
fi
# Scripts in glibmm. These are source files.
gen_docs="$GMMPROC_GEN_SOURCE_DIR/glibmm/tools/defs_gen/docextract_to_xml.py"
gen_methods="$GMMPROC_GEN_SOURCE_DIR/glibmm/tools/defs_gen/h2def.py"
gen_enums="$GMMPROC_GEN_SOURCE_DIR/glibmm/tools/enum.pl"
# Where to find executables that generate extra defs (signals and properties).
# glibmm is built with autotools.
# autotools support non-source-dir builds, but glibmm does not.
# See the glibmm entry in jhbuild's modulesets files.
extra_defs_gen_dir="$GMMPROC_GEN_SOURCE_DIR/glibmm/tools/extra_defs_gen"
source_prefix="$GMMPROC_GEN_SOURCE_DIR/glib"
build_prefix="$GMMPROC_GEN_BUILD_DIR/glib"
if [ "$build_prefix" == "$source_prefix" ]; then
# glib is built with meson, which requires non-source-dir builds.
# This is what jhbuild does, if neccesary, to force non-source-dir builds.
build_prefix="$build_prefix/build"
fi
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment