makegtkruntime.sh.in 6.66 KB
#!/bin/bash
PKG_CONFIG="@PKG_CONFIG@"
GTK_VERSION="gtk+-@GTK_VERSION@"

GTK_PREFIX=$($PKG_CONFIG --variable=prefix $GTK_VERSION)
TARGET_PATH=".bin/gtkruntime"

# Clean target folder
rm -fr "$TARGET_PATH/*"
mkdir -p "$TARGET_PATH"

copyFile() {

	GTKPATH=$(find "$GTK_PREFIX/bin" -name "$1")
	SYSPATH=$(find "/bin" -name "$1")

	if [ ! -z "$GTKPATH" ]; then
		echo "$GTKPATH ..."
		cp $GTKPATH "$TARGET_PATH"
		if [ "$?" != "0" ]; then
			echo "Can´t copy $GTKPATH"
			return 1
		fi
	elif [ ! -z "$SYSPATH" ]; then
		echo "$SYSPATH ..."
		cp $SYSPATH "$TARGET_PATH"
		if [ "$?" != "0" ]; then
			echo "Can´t copy $SYSPATH"
			return 1
		fi

	else
		echo "Can´t find ${GTK_PREFIX}/bin/${1}"
		return 1
	fi

	return 0
}

copyFiles() {

	while read FILE
	do
		copyFile "$FILE"
		if [ "$?" != "0" ]; then
			exit -1
		fi
	done < $1
	rm -f $1

}

copy_locale() {

	rm -fr $TARGET_PATH/share/locale/pt_BR/LC_MESSAGES
	mkdir -p $TARGET_PATH/share/locale/pt_BR/LC_MESSAGES

	while read FILE
	do
		echo "$GTK_PREFIX/share/locale/pt_BR/LC_MESSAGES/$FILE ..."

		if [ -e "$GTK_PREFIX/share/locale/pt_BR/LC_MESSAGES/$FILE" ]; then
			cp "$GTK_PREFIX/share/locale/pt_BR/LC_MESSAGES/$FILE" "$TARGET_PATH/share/locale/pt_BR/LC_MESSAGES"
			if [ "$?" != "0" ]; then
				echo "Can´t copy $FILE"
				exit -1
			fi
		fi

	done < $1
	rm -f $1
}

CopyGTK3Theme() {

	mkdir -p ${TARGET_PATH}/share/icons
	if [ "$?" != 0 ]; then
		echo "Can´t create icons folder"
		exit -1
	fi

	cp -rv /usr/share/icons/${1} ${TARGET_PATH}/share/icons
	if [ "$?" != 0 ]; then
		echo "Can´t copy ${1} icons"
		exit -1
	fi

	mkdir -p ${TARGET_PATH}/share/themes
	if [ "$?" != 0 ]; then
		echo "Can´t create themes folder"
		exit -1
	fi

	cp -rv /usr/share/themes/${1} ${TARGET_PATH}/share/themes
	if [ "$?" != 0 ]; then
		echo "Can´t copy ${1} theme"
		exit -1
	fi


}


gtk3() {

TEMPFILE="temp1.tmp"
cat > $TEMPFILE << EOF
libglib-*.dll
libintl*.dll
libgmodule*.dll
libgobject*.dll
libffi*.dll
libgtk-*.dll
libgdk-*.dll
libcairo-gobject*.dll
libcairo-2*.dll
libfontconfig-1*.dll
libfreetype-6*.dll
zlib1.dll
libxml2-*.dll
libpixman-1*.dll
libpng*.dll
libgdk_pixbuf*.dll
libgio-*.dll
libjasper-*.dll
libjpeg-8*.dll
libtiff-5*.dll
liblzma-5*.dll
libpango-1*.dll
libpangocairo-1*.dll
libpangoft2-1*.dll
libpangowin32-1*.dll
libatk-*.dll
libcrypto-*.dll
libssl-*.dll
libharfbuzz-0.dll
libstdc++-6.dll
icule53.dll
icuuc53.dll
icudata53.dll
libgraphite2.dll
librsvg-*.dll
gspawn-win*-helper-console.exe
gspawn-win*-helper.exe
gdk-pixbuf-query-loaders.exe
EOF
copyFiles $TEMPFILE


# Copy loaders
GDK_LOADERS=$(${PKG_CONFIG} --variable=gdk_pixbuf_binarydir gdk-pixbuf-2.0)/loaders
GDK_PREFIX=$(${PKG_CONFIG} --variable=prefix gdk-pixbuf-2.0)
GDK_TARGET=$(echo ${GDK_LOADERS}/ | sed -e "s@${GDK_PREFIX}@@g")

mkdir -p ${TARGET_PATH}/${GDK_TARGET}

cp -v ${GDK_LOADERS}/* ${TARGET_PATH}/${GDK_TARGET}
if [ "$?" != 0 ]; then
	echo "Can´t copy loaders"
	exit -1
fi


# Copy optional files
copyFile libgcc_s_sjlj-1.dll
copyFile libgcc_s_seh-1.dll

# Build locale dirs
cat > $TEMPFILE << EOF
atk10.mo
gdk-pixbuf.mo
glib20.mo
gtk30-properties.mo
EOF

copy_locale $TEMPFILE

mkdir -p $TARGET_PATH/share/glib-2.0/schemas
if [ "$?" != 0 ]; then
	echo "Can´t create schemas folder"
	exit -1
fi

if [ ! -e $GTK_PREFIX/share/glib-2.0/schemas/gschemas.compiled ]; then
	glib-compile-schemas $GTK_PREFIX/share/glib-2.0/schemas
fi

cp $GTK_PREFIX/share/glib-2.0/schemas/gschemas.compiled $TARGET_PATH/share/glib-2.0/schemas/gschemas.compiled
if [ "$?" != 0 ]; then
        echo "Can´t copy gshemas.compiled"
        exit -1
fi

# Copia Adwaita
CopyGTK3Theme "Adwaita"

#mkdir -p $TARGET_PATH/share/icons/Adwaita
#if [ "$?" != 0 ]; then
#	echo "Can´t create icons folder"
#	exit -1
#fi
#
#cp -rv /usr/share/icons/Adwaita $TARGET_PATH/share/icons/Adwaita
#if [ "$?" != 0 ]; then
#	echo "Can´t copy icons"
#	exit -1
#fi
#
#mkdir -p $TARGET_PATH/share/themes/Adwaita
#if [ "$?" != 0 ]; then
#	echo "Can´t create Adwaita theme"
#	exit -1
#fi
#
#cp -rv /usr/share/themes/Adwaita $TARGET_PATH/share/themes/Adwaita
#if [ "$?" != 0 ]; then
#	echo "Can´t copy Adwaita theme"
#	exit -1
#fi


# Copia gnome
#mkdir -p $TARGET_PATH/share/icons/gnome
#if [ "$?" != 0 ]; then
#	echo "Can´t create icons folder"
#	exit -1
#fi
#
#cp -rv $GTK_PREFIX/share/icons/gnome $TARGET_PATH/share/icons/gnome
#if [ "$?" != 0 ]; then
#	echo "Can´t copy icons"
#	exit -1
#fi

mkdir -p $TARGET_PATH/etc
cp -rv $GTK_PREFIX/etc/gtk-3.0 $TARGET_PATH/etc/gtk-3.0
if [ "$?" != 0 ]; then
	echo "Can´t copy theme"
	exit -1
fi

cat > $TARGET_PATH/etc/gtk-3.0/settings.ini  << EOF
[Settings]
gtk-theme-name = Adwaita
gtk-icon-theme-name = Adwaita
gtk-fallback-icon-theme = Adwaita
gtk-font-name = Sans 10
gtk-button-images = 1
EOF
}

gtk2() {

# Build DLL list
TEMPFILE="temp1.tmp"
cat > $TEMPFILE << EOF
intl.dll
libatk-1.0-0.dll
libcairo-2.dll
libgailutil-18.dll
libgdk_pixbuf-2.0-0.dll
libgdk-win32-2.0-0.dll
libgettextlib-0-*.dll
libgettextpo*.dll
libgettextsrc*.dll
libgio-2.0-0.dll
libglib-2.0-0.dll
libgmodule-2.0-0.dll
libgobject-2.0-0.dll
libgthread-2.0-0.dll
libgtk-win32-2.0-0.dll
libpango-1.0-0.dll
libpangocairo-1.0-0.dll
libpangoft2-1.0-0.dll
libpangowin32-1.0-0.dll
zlib1.dll
libpng*.dll
libfontconfig*.dll
libasprintf*.dll
libgettextlib*.dll
libexpat*.dll
freetype*.dll
gspawn-win32-helper-console.exe
gspawn-win32-helper.exe
gdk-pixbuf-query-loaders.exe
EOF

# jpeg62.dll
# libtiff*.dll
copyFiles $TEMPFILE

# Build locale dirs
cat > $TEMPFILE << EOF
atk10.mo
gdk-pixbuf.mo
gettext-runtime.mo
gettext-tools.mo
glib20.mo
gtk20-properties.mo
gtk20.mo
libiconv.mo
EOF

copy_locale $TEMPFILE

# Copy default theme
THEME_PATH="themes/MS-Windows/gtk-2.0"
rm -fr "$TARGET_PATH/$THEME_PATH"
mkdir -p "$TARGET_PATH/share/$THEME_PATH"

echo "$GTK_PREFIX/share/$THEME_PATH/gtkrc ..."
cp "$GTK_PREFIX/share/$THEME_PATH/gtkrc" "$TARGET_PATH/share/$THEME_PATH/gtkrc"
if [ "$?" != "0" ]; then
	echo "Can´t copy default theme"
	exit -1
fi

cat > $TEMPFILE << EOF
engines
loaders
EOF

rm -fr $TARGET_PATH/lib/gtk-2.0/$GTK_RUNTIME_VERSION/
mkdir -p $TARGET_PATH/lib/gtk-2.0/$GTK_RUNTIME_VERSION/
while read DIRNAME
do
	if [ -d "$GTK_PREFIX/lib/gtk-2.0/$GTK_RUNTIME_VERSION/$DIRNAME" ]; then
		echo "$GTK_PREFIX/lib/gtk-2.0/$GTK_RUNTIME_VERSION/$DIRNAME ..."
		mkdir -p "$TARGET_PATH/lib/gtk-2.0/$GTK_RUNTIME_VERSION/$DIRNAME"
		cp -r "$GTK_PREFIX/lib/gtk-2.0/$GTK_RUNTIME_VERSION/$DIRNAME" "$TARGET_PATH/lib/gtk-2.0/$GTK_RUNTIME_VERSION"
		if [ "$?" != "0" ]; then
			echo "Can´t copy $DIRNAME"
			exit -1
		fi
	fi
done < $TEMPFILE
rm -f $TEMPFILE

mkdir -p $TARGET_PATH/etc/gtk-2.0/
echo "gtk-theme-name = \"MS-Windows\"" >  $TARGET_PATH/etc/gtk-2.0/gtkrc
if [ "$?" != "0" ]; then
	echo "Can´t set theme name"
	exit -1
fi

}

if [ "$GTK_VERSION" == "gtk+-3.0" ]; then
	gtk3
else
	gtk2
fi

echo $0 Complete