This is the mail archive of the
frysk@sources.redhat.com
mailing list for the frysk project.
Re: Fix build on x86-64
On Sat, 14 Jan 2006, Andrew Cagney wrote:
> Wu Zhou wrote:
>
> I've put a patched gcc 4.0.x tar-ball up in
> ftp://sources.redhat.com/pub/frysk/RHEL-4/ ; you may want to try it out as an
> interum. I've updated the build notes to mention this, recommending it for
> FC-4, RHEL 4 pre U3, and even Ubuntu.
>
> > I can also build frysk on a ppc64 box with some workaround. Maybe I can code
> > a patch for that too?
> >
> I'm all ears :-)
OK. Here it is. I tested it on ppc64. The build works ok.
ChangeLog:
===============
* frysk-ppc64-skip-cniinner.patch: GCJ get an ICE on cniinner, skip it
at this time.
* frysk.spec (Patch004): Add patch frysk-ppc64-skip-cniinner.patch.
(ExclusiveArch): this can able to build on x86, ppc64. Maybe x86-64 too.
(patch004): If arch is ppc64, apply frysk-ppc64-skip-cniinner.patch.
(prep): The old config.guess in antlr package fail on ppc64.
replace it with the shipped config.guess.
(prep): %{_libdir} will point to /usr/lib64, but frysk can only build as
32-bits application on ppc64 at this time.
(EXPORT): ditto.
(build): gtk2 need to link explicitly with libm on ppc64. Don't know
why.
(post): replace the hard-coded pango modules directory with an
arch-dependent one.
Patch
===============
*** frysk/frysk-imports/tests/Makefile.am Sat Jan 14 17:38:20 2006
--- frysk/frysk-imports/tests/Makefile.am.new Sat Jan 14 17:40:13 2006
***************
*** 94,100 ****
$(GCJH) -I. cniinner.Child
$(GCJH) -I. 'cniinner.Child$$Nested'
$(GCJ) -g -I. -c -o cniinner/native.o $(srcdir)/cniinner/native.cxx
! $(GCJ) -g -I. --main=cniinner.Child -o cniinner/a.out \
$(srcdir)/cniinner/Parent.java \
$(srcdir)/cniinner/Child.java \
cniinner/native.o
--- 94,100 ----
$(GCJH) -I. cniinner.Child
$(GCJH) -I. 'cniinner.Child$$Nested'
$(GCJ) -g -I. -c -o cniinner/native.o $(srcdir)/cniinner/native.cxx
! # $(GCJ) -g -I. --main=cniinner.Child -o cniinner/a.out \
$(srcdir)/cniinner/Parent.java \
$(srcdir)/cniinner/Child.java \
cniinner/native.o
*** frysk.spec-4.4 Mon Jan 16 12:52:23 2006
--- frysk.spec Mon Jan 16 17:06:12 2006
***************
*** 53,58 ****
--- 53,59 ----
Patch001: frysk-disable-imports-tests.patch
Patch002: frysk-head.patch
Patch003: frysk-makefileam.patch
+ Patch004: frysk-ppc64-skip-cniinner.patch
Source100: http://www.antlr.org/download/%{antlr}.tar.gz
Patch101: antlr.patch
Source200: %{atk}.tar.bz2
***************
*** 135,143 ****
BuildRequires: vte-devel libgnomeui-devel libgnomecanvas
Requires: vte
- # Only build on i386 for now
- ExclusiveArch: %{ix86}
-
%description
Frysk is an execution-analysis technology implemented using native Java and C++.
It is aimed at providing developers and sysadmins with the ability to both
--- 136,141 ----
***************
*** 163,168 ****
--- 161,169 ----
# %patch001 -p2 -b .disable-imports-tests
# %patch002 -p0 -b .head
%patch003 -p2 -b .makefileam
+ %ifarch ppc64
+ %patch004 -p1 -b .ppc64-skip-cniinner
+ %endif
./autogen.sh
popd
***************
*** 170,175 ****
--- 171,179 ----
%setup -D -q -T -c -a100
pushd %{antlr_srcdir}
%patch101 -p2
+ %ifarch ppc64
+ /bin/cp -f `rpm -qil automake | grep config.guess` %{antlr_srcdir}/scripts/config.guess
+ %endif
popd
# UNPACK before any java packages, they need these macros/
***************
*** 332,338 ****
--- 336,348 ----
# export LD_LIBRARY_PATH and PKG_CONFIG_PATH
+ %ifarch ppc64
+ export PKG_CONFIG_PATH=$RPM_BUILD_ROOT/%{__frysk_libdir}/pkgconfig:%{_prefix}/lib/pkgconfig
+ %endif
+ %ifnarch ppc64
export PKG_CONFIG_PATH=$RPM_BUILD_ROOT/%{__frysk_libdir}/pkgconfig:%{_libdir}/pkgconfig
+ %endif
+
export LD_LIBRARY_PATH=$RPM_BUILD_ROOT/%{__frysk_libdir}
#----------------------------------------------------------------------
***************
*** 366,372 ****
--- 376,387 ----
echo export \'CXX=${CXX:-/usr/bin/g++4}\'
echo export \'JAVA=${JAVA:-/usr/bin/gij4}\'
echo export \'JV_SCAN=${JV_SCAN:-/usr/bin/jv-scan4}\'
+ %ifarch ppc64
+ echo export PKG_CONFIG_PATH=${PKG_CONFIG_PATH:-$RPM_BUILD_ROOT/%{__frysk_libdir}/pkgconfig:%{_prefix}/lib/pkgconfig}
+ %endif
+ %ifnarch ppc64
echo export PKG_CONFIG_PATH=${PKG_CONFIG_PATH:-$RPM_BUILD_ROOT/%{__frysk_libdir}/pkgconfig:%{_libdir}/pkgconfig}
+ %endif
echo export LD_LIBRARY_PATH=${LD_LIBRARY_PATH:-$RPM_BUILD_ROOT/%{__frysk_libdir}}
}
***************
*** 609,615 ****
--- 624,635 ----
#------------gtk2------------------------------------------
+ %ifarch ppc64
+ %define gtk2_makeflags "GDK_PIXBUF_DEP_CFLAGS = %{GLIB_CFLAGS} -I/usr/include/libpng12" "GDK_PIXBUF_DEP_LIBS = %{lib_gobject} %{lib_gmodule} %{lib_gthread} %{lib_glib} -lm" "GDK_DEP_CFLAGS = -DXTHREADS -D_REENTRANT -DXUSE_MTSAFE_API %{GLIB_CFLAGS} %{CAIRO_CFLAGS} %{PANGO_CFLAGS}" "GDK_DEP_LIBS = -L/usr/X11R6/lib -lXrandr -lXrender -lXi -lXinerama -lXext -lX11 %{lib_gobject} %{lib_gmodule} %{lib_gthread} %{lib_glib} %{lib_fontconfig} -ldl -lXcursor -lXrender -lXext -lXfixes -lX11 -lm" "GTK_DEP_CFLAGS = %{GLIB_CFLAGS} %{PANGO_CFLAGS} %{CAIRO_CFLAGS} %{ATK_CFLAGS}" "GTK_DEP_LIBS = -L/usr/X11R6/lib -lX11 %{lib_pangocairo} %{lib_pango} %{lib_atk} %{lib_gobject} %{lib_gmodule} %{lib_gthread} %{lib_glib} %{lib_cairo} -ldl -lm" "%{glib_cflags}" "GLIB_LIBS = %{lib_gobject} %{lib_gmodule} %{lib_gthread} %{lib_glib}" "%{cairo_cflags}" "GDK_PIXBUF_XLIB_DEP_CFLAGS = %{GLIB_CFLAGS} -I/usr/X11R6/include"
+ %endif
+ %ifnarch ppc64
%define gtk2_makeflags "GDK_PIXBUF_DEP_CFLAGS = %{GLIB_CFLAGS} -I/usr/include/libpng12" "GDK_PIXBUF_DEP_LIBS = %{lib_gobject} %{lib_gmodule} %{lib_gthread} %{lib_glib}" "GDK_DEP_CFLAGS = -DXTHREADS -D_REENTRANT -DXUSE_MTSAFE_API %{GLIB_CFLAGS} %{CAIRO_CFLAGS} %{PANGO_CFLAGS}" "GDK_DEP_LIBS = -L/usr/X11R6/lib -lXrandr -lXrender -lXi -lXinerama -lXext -lX11 %{lib_gobject} %{lib_gmodule} %{lib_gthread} %{lib_glib} %{lib_fontconfig} -ldl -lXcursor -lXrender -lXext -lXfixes -lX11 -lm" "GTK_DEP_CFLAGS = %{GLIB_CFLAGS} %{PANGO_CFLAGS} %{CAIRO_CFLAGS} %{ATK_CFLAGS}" "GTK_DEP_LIBS = -L/usr/X11R6/lib -lX11 %{lib_pangocairo} %{lib_pango} %{lib_atk} %{lib_gobject} %{lib_gmodule} %{lib_gthread} %{lib_glib} %{lib_cairo} -ldl -lm" "%{glib_cflags}" "GLIB_LIBS = %{lib_gobject} %{lib_gmodule} %{lib_gthread} %{lib_glib}" "%{cairo_cflags}" "GDK_PIXBUF_XLIB_DEP_CFLAGS = %{GLIB_CFLAGS} -I/usr/X11R6/include"
+ %endif
%define gtk2_builddir %{BUILDDIR}/%{gtk2}
***************
*** 768,775 ****
%post
! mkdir -p %{__frysk_sysconfdir}/pango/i686-redhat-linux-gnu
! %{__frysk_bindir}/frysk-pango-querymodules > %{__frysk_sysconfdir}/pango/i686-redhat-linux-gnu/pango.modules
mkdir -p %{__frysk_sysconfdir}/gtk-2.0
%{__frysk_bindir}/frysk-gdk-pixbuf-query-loaders > %{__frysk_sysconfdir}/gtk-2.0/gdk-pixbuf.loaders
--- 788,805 ----
%post
! %ifarch ppc64
! %define arch_pango_modules_dir powerpc64-redhat-linux-gnu
! %endif
! %ifarch %{ix86}
! %define arch_pango_modules_dir i686-redhat-linux-gnu
! %endif
! %ifarch x86_64
! %define arch_pango_modules_dir x86_64-redhat-linux-gnu
! %endif
!
! mkdir -p %{__frysk_sysconfdir}/pango/%{arch_pango_modules_dir}
! %{__frysk_bindir}/frysk-pango-querymodules > %{__frysk_sysconfdir}/pango/%{arch_pango_modules_dir}/pango.modules
mkdir -p %{__frysk_sysconfdir}/gtk-2.0
%{__frysk_bindir}/frysk-gdk-pixbuf-query-loaders > %{__frysk_sysconfdir}/gtk-2.0/gdk-pixbuf.loaders
***************
*** 778,784 ****
%postun
! rm -f %{__frysk_sysconfdir}/pango/i686-redhat-linux-gnu/pango.modules
rm -f %{__frysk_sysconfdir}/gtk-2.0/gdk-pixbuf.loaders
/sbin/ldconfig
--- 808,814 ----
%postun
! rm -f %{__frysk_sysconfdir}/pango/%{arch_pango_modules_dir}/pango.modules
rm -f %{__frysk_sysconfdir}/gtk-2.0/gdk-pixbuf.loaders
/sbin/ldconfig
Is it ok? Maybe I need to test it on x86. But don't have time today. :-)
Regards
- Wu Zhou