« Return to Thread: [Cooker] libobjc_gc.so missing from the gcc srpm build

Re: [Cooker] libobjc_gc.so missing from the gcc srpm build

by Mika Laitio :: Rate this Message:

Reply to Author | View in Thread

> On Friday 03 of July 2009 02:39:17 Mika Laitio wrote:
>> ../../libcpp/macro.c: In function create_iso_definition:
>> ../../libcpp/macro.c:1659: error: format not a string literal and no
>> format arguments
>> ../../libcpp/macro.c:1672: error: format not a string literal and no
>> format arguments
>>
>> Mika
>
> http://wiki.mandriva.com/en/Development/Packaging/Problems#format_not_a_string_literal_and_no_format_arguments

Yes, making a that kind of changes described there helped. But later there
started to come yet other build problems because 2009.1 uses now a newer
libtool version than what was used for generating the autoconf scripts for
the gcc src rpm. Maybe it's better that instead of fighting with 2009.1
version of gcc, I concentrate to cooker version... I actually already
started working with a that one by installing cooker to qemu image and
building src rpm's there with better success :-)

So attached is the patch against the gcc.spec in gcc-4.4.0-3mnb2.src.rpm
that enables the libobjc_gc.so build and packages it (and .a file) to rpm.
Would it be possible that somebody commits that change to gcc?

In addition the gc-7.1.3mdv2009.1.src.rpm that has been maintained by the
Adam Williamson and provides the libgc.so from the boehm-gc requires also
a patch that is also attached, otherwise the src rpm build will fail on
the cooked machine on the rpm package phase because new version of
/usr/bin/install does not accept same files specified more than once
as a parameters... So could somebody commit that patch also to Mandriva
repo and regenerate srpm and rpm?

Mika
--- gcc.spec_orig 2009-07-16 11:26:33.000000000 +0300
+++ gcc.spec 2009-07-16 11:30:53.000000000 +0300
@@ -1364,6 +1364,7 @@
 %endif
 %if %{build_objc}
 LANGUAGES="$LANGUAGES,objc"
+LIBOBJC_FLAGS="--enable-objc-gc"
 %endif
 %if %{build_objcp}
 LANGUAGES="$LANGUAGES,obj-c++"
@@ -1462,7 +1463,8 @@
  --mandir=%{_mandir} --infodir=%{_infodir} --enable-checking=release \
  --enable-languages="$LANGUAGES" $PROGRAM_PREFIX $PROGRAM_SUFFIX \
  --build=%{_target_platform} --host=%{_target_platform} $CROSS_FLAGS $TARGET_FLAGS \
- --with-system-zlib $LIBC_FLAGS $LIBSTDCXX_FLAGS $LIBJAVA_FLAGS $SSP_FLAGS $MUDFLAP_FLAGS $LIBFFI_FLAGS \
+ --with-system-zlib $LIBC_FLAGS $LIBOBJC_FLAGS $LIBSTDCXX_FLAGS $LIBJAVA_FLAGS $SSP_FLAGS \
+ $MUDFLAP_FLAGS $LIBFFI_FLAGS \
  --disable-werror $LIBGOMP_FLAGS \
  $CLOOG_FLAGS --with-python-dir=%{python_dir}
 touch ../gcc/c-gperf.h
@@ -2666,9 +2668,15 @@
 #
 %{target_libdir}/libobjc.so.%{libobjc_major}
 %{target_libdir}/libobjc.so.%{libobjc_major}.0.0
+%{target_libdir}/libobjc_gc.a
+%{target_libdir}/libobjc_gc.so
+%{target_libdir}/libobjc_gc.so.%{libobjc_major}
+%{target_libdir}/libobjc_gc.so.%{libobjc_major}.0.0
 %if %isarch %{biarches}
 %{_prefix}/lib/libobjc.so.%{libobjc_major}
 %{_prefix}/lib/libobjc.so.%{libobjc_major}.0.0
+%{_prefix}/lib/libobjc_gc.so.%{libobjc_major}
+%{_prefix}/lib/libobjc_gc.so.%{libobjc_major}.0.0
 %endif
 %endif
 

diff -Naur boehm-gc-rpmbuild-orig/SOURCES/avoid_install_same_headers_twice.patch boehm-gc-rpmbuild-new/SOURCES/avoid_install_same_headers_twice.patch
--- boehm-gc-rpmbuild-orig/SOURCES/avoid_install_same_headers_twice.patch 1970-01-01 02:00:00.000000000 +0200
+++ boehm-gc-rpmbuild-new/SOURCES/avoid_install_same_headers_twice.patch 2009-07-16 12:13:37.000000000 +0300
@@ -0,0 +1,222 @@
+diff -Naur gc-7.1/Makefile.am gc-7.1-new/Makefile.am
+--- gc-7.1/Makefile.am 2009-07-15 13:12:44.000000000 +0300
++++ gc-7.1-new/Makefile.am 2009-07-15 13:13:15.000000000 +0300
+@@ -96,7 +96,7 @@
+
+ if CPLUSPLUS
+ lib_LTLIBRARIES += libgccpp.la
+-pkginclude_HEADERS += include/gc_cpp.h include/gc_allocator.h
++#pkginclude_HEADERS += include/gc_cpp.h include/gc_allocator.h
+ libgccpp_la_SOURCES = gc_cpp.cc
+ libgccpp_la_LIBADD = ./libgc.la
+ libgccpp_la_LDFLAGS = -version-info 1:3:0 -no-undefined
+diff -Naur gc-7.1/Makefile.am~ gc-7.1-new/Makefile.am~
+--- gc-7.1/Makefile.am~ 1970-01-01 02:00:00.000000000 +0200
++++ gc-7.1-new/Makefile.am~ 2009-07-15 13:12:47.000000000 +0300
+@@ -0,0 +1,206 @@
++# Copyright (c) 1999-2001 by Red Hat, Inc. All rights reserved.
++#
++# THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
++# OR IMPLIED.  ANY USE IS AT YOUR OWN RISK.
++#
++# Permission is hereby granted to use or copy this program
++# for any purpose,  provided the above notices are retained on all copies.
++# Permission to modify the code and to distribute modified code is granted,
++# provided the above notices are retained, and a notice that the code was
++# modified is included with the above copyright notice.
++#
++# Original author: Tom Tromey
++# Severely truncated by Hans-J. Boehm
++# Modified by: Grzegorz Jakacki <jakacki at acm dot org>
++# Modified by: Petter Urkedal <petter.urkedal@...> (2005-04)
++
++## Process this file with automake to produce Makefile.in.
++
++## FIXME: `make distcheck' in this directory will not currently work.
++##     This is most likely to the explicit flags passed to submakes.
++
++# We currently use the source files directly from libatomic_ops, if we
++# use the internal version.  This is done since libatomic_ops doesn't
++# use libtool, since it has no real use for it.  But that seems to make
++# it hard to use either the resulting object files or libraries.
++# Thus there seems too be no real reason to recusively build in the
++# libatomic_ops directory.
++# if USE_INTERNAL_LIBATOMICS_OPS
++# SUBDIRS = @maybe_libatomic_ops@
++# else
++# SUBDIRS =
++# endif
++SUBDIRS =
++
++# Initialize variables so that we can declare files locally.
++EXTRA_DIST =
++lib_LTLIBRARIES =
++include_HEADERS =
++pkginclude_HEADERS =
++dist_noinst_HEADERS =
++check_PROGRAMS =
++TESTS =
++
++pkgconfigdir = $(libdir)/pkgconfig
++dist_pkgconfig_DATA = bdw-gc.pc
++
++# C Library
++# ---------
++
++lib_LTLIBRARIES += libgc.la
++libgc_la_SOURCES = \
++ allchblk.c alloc.c blacklst.c checksums.c dbg_mlc.c \
++ dyn_load.c finalize.c gc_dlopen.c gcj_mlc.c headers.c \
++ malloc.c mallocx.c mark.c mark_rts.c misc.c new_hblk.c \
++ obj_map.c os_dep.c pcr_interface.c ptr_chck.c real_malloc.c reclaim.c \
++ specific.c stubborn.c typd_mlc.c \
++ backgraph.c thread_local_alloc.c
++
++# C Library: Architecture Dependent
++# ---------------------------------
++
++if PTHREADS
++libgc_la_SOURCES += pthread_support.c pthread_stop_world.c
++endif
++
++if DARWIN_THREADS
++libgc_la_SOURCES += darwin_stop_world.c
++endif
++
++if WIN32_THREADS
++libgc_la_SOURCES += win32_threads.c
++endif
++
++if USE_INTERNAL_LIBATOMIC_OPS
++nodist_libgc_la_SOURCES = ./atomic_ops.c
++endif
++  
++if NEED_ATOMIC_OPS_ASM
++nodist_libgc_la_SOURCES = ./atomic_ops_sysdeps.S
++endif
++
++# Include THREADDLLIBS here to ensure that the correct versions of
++# linuxthread semaphore functions get linked:
++libgc_la_LIBADD = @addobjs@ $(THREADDLLIBS) $(UNWINDLIBS)
++libgc_la_DEPENDENCIES = @addobjs@
++libgc_la_LDFLAGS = $(extra_ldflags_libgc) -version-info 1:3:0 -no-undefined
++
++EXTRA_libgc_la_SOURCES = alpha_mach_dep.S \
++    mips_sgi_mach_dep.s mips_ultrix_mach_dep.s \
++    rs6000_mach_dep.s sparc_mach_dep.S sparc_netbsd_mach_dep.s \
++    sparc_sunos4_mach_dep.s ia64_save_regs_in_stack.s
++
++
++# C++ Interface
++# -------------
++
++if CPLUSPLUS
++lib_LTLIBRARIES += libgccpp.la
++pkginclude_HEADERS += include/gc_cpp.h include/gc_allocator.h
++libgccpp_la_SOURCES = gc_cpp.cc
++libgccpp_la_LIBADD = ./libgc.la
++libgccpp_la_LDFLAGS = -version-info 1:3:0 -no-undefined
++endif
++
++# FIXME: If Visual C++ users use Makefile.am, this should go into
++# pkginclude_HEADERS with proper AM_CONDITIONALization.  Otherwise
++# delete this comment.
++EXTRA_DIST += gc_cpp.cpp
++
++
++# Misc
++# ----
++
++AM_CXXFLAGS = @GC_CFLAGS@
++AM_CFLAGS = @GC_CFLAGS@
++
++## FIXME: relies on internal code generated by automake.
++## FIXME: ./configure --enable-dependency-tracking should be used
++#all_objs = @addobjs@ $(libgc_la_OBJECTS)
++#$(all_objs) : include/private/gcconfig.h include/private/gc_priv.h \
++#include/private/gc_hdrs.h include/gc.h include/gc_gcj.h \
++#include/gc_pthread_redirects.h include/gc_config_macros.h \
++#include/private/thread_local_alloc.h include/private_support.h \
++#include/private/pthread_stop_world.h \
++#include/gc_mark.h @addincludes@
++
++## FIXME: we shouldn't have to do this, but automake forces us to.
++## We use -Wp,-P to strip #line directives.  Irix `as' chokes on
++## these.
++if COMPILER_XLC
++  ## XLC neither requires nor tolerates the unnecessary assembler goop
++  ASM_CPP_OPTIONS =
++else
++  ## We use -Wp,-P to strip #line directives.  Irix `as' chokes on
++  ## these.
++  ASM_CPP_OPTIONS = -Wp,-P -x assembler-with-cpp
++endif
++.s.lo:
++ $(LTCOMPILE) $(ASM_CPP_OPTIONS) -c $<
++
++.S.lo:
++ $(LTCOMPILE) $(ASM_CPP_OPTIONS) -c $<
++
++## We need to add DEFS to assembler flags
++## :FIXME: what if assembler does not accept -D... ?
++##     (use Autoconf to prepare ASDEFS ???)
++
++CCASFLAGS += $(DEFS)
++
++dist_noinst_SCRIPTS = callprocs configure.host
++    ## callprocs --- used by Makefile.{dj,direct}
++    ## configure.host --- used by Makefile.{am,dj,direct}
++
++# headers which are not installed
++# (see include/include.am for more)
++#
++
++# documentation which is not installed
++#
++EXTRA_DIST += README.QUICK
++
++# other makefiles
++# :GOTCHA: deliberately we do not include 'Makefile'
++EXTRA_DIST += BCC_MAKEFILE NT_MAKEFILE NT_THREADS_MAKEFILE \
++    OS2_MAKEFILE PCR-Makefile digimars.mak EMX_MAKEFILE \
++    Makefile.direct Makefile.dj Makefile.DLLs SMakefile.amiga \
++    WCC_MAKEFILE configure_atomic_ops.sh \
++    NT_STATIC_THREADS_MAKEFILE NT_X64_STATIC_THREADS_MAKEFILE \
++    NT_X64_THREADS_MAKEFILE
++
++# files used by makefiles other than Makefile.am
++#
++EXTRA_DIST += add_gc_prefix.c gcname.c if_mach.c if_not_there.c \
++    hpux_test_and_clear.s gc.mak MacOS.c \
++    MacProjects.sit.hqx mach_dep.c setjmp_t.c \
++    threadlibs.c AmigaOS.c \
++    Mac_files/datastart.c Mac_files/dataend.c \
++    Mac_files/MacOS_config.h Mac_files/MacOS_Test_config.h \
++    include/private/msvc_dbg.h msvc_dbg.c
++
++# The libatomic_ops library.  This is not ideal, since we pick up junk from
++# there.  The hard-coded version number should also go.
++EXTRA_DIST += libatomic_ops-1.2
++
++# this is an auxiliary shell file used by Makefile and Makefile.direct
++#
++CONFIG_STATUS_DEPENDENCIES = $(srcdir)/configure.host
++
++# :FIXME: why do we distribute this one???
++#
++EXTRA_DIST += libtool.m4
++
++#
++# :GOTCHA: GNU make rule for making .s out of .S is flawed,
++# it will not remove dest if building fails
++.S.s:
++ if $(CPP) $< >$@ ; then :; else rm -f $@; fi
++
++include include/include.am
++include cord/cord.am
++include tests/tests.am
++include doc/doc.am
++# Putting these at the top causes cord to be built first, and not find libgc.a
++# on HP/UX.  There may be a better fix.
++
++
diff -Naur boehm-gc-rpmbuild-orig/SPECS/gc.spec boehm-gc-rpmbuild-new/SPECS/gc.spec
--- boehm-gc-rpmbuild-orig/SPECS/gc.spec 2009-07-16 12:12:56.000000000 +0300
+++ boehm-gc-rpmbuild-new/SPECS/gc.spec 2009-07-16 12:12:34.000000000 +0300
@@ -13,6 +13,7 @@
 Source0: http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/%{name}-%{version}.tar.gz
 BuildRequires: libatomic_ops-devel
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
+Patch001: avoid_install_same_headers_twice.patch
 
 %description
 Boehm's GC is a garbage collecting storage allocator that is intended to be
@@ -52,6 +53,7 @@
 
 %prep
 %setup -q
+%patch001 -p1
 
 %build
 # refresh auto*/libtool to purge rpaths

 « Return to Thread: [Cooker] libobjc_gc.so missing from the gcc srpm build