Archived

This forum has been archived. Please start a new discussion on GitHub.

Package zeroc-ice for debian

Hi,
when I began using Ice, I downloaded, compiled and installed the source distributions for my debian. Now I have reinstalled all with the help of apt, and now I have a problem compiling my old applications and all the demos. Before the reinstallation, I hadn't problems compiling them with "make", but after it (specilly after I installed the package zeroc-ice) , I get an error that said that there is no rules to build the objective 'Clases.cpp' ... Clases.cpp should be generated from my slice definition Clases.ice. I have taken the Makefile provided in the demos as reference, and I import into my Makefiles the Make.rules provided in Ice-3.1.1/config
I don't know what changes should I do to fix this problem, could you help me??

Thanks in advance for your time

Comments

  • benoit
    benoit Rennes, France
    Hi,

    Note that we don't support the debian packages, you should check with the package maintainer if you have any issues with these packages. In any case, you should provide more information on your issue. It's difficult to say what could be wrong without more information. What Ice version do you use? What is the exact error message?

    It sounds like the build rule for your Slice files isn't found. This could be because the slice2cpp translator isn't found. Setting ICE_HOME to /usr might help (assuming Ice is installed in /usr).

    Cheers,
    Benoit.
  • The slice2cpp is found, that isn't the problem. The exact error message is (translated from spanish):

    make: *** There in no rules to build the objective 'Clases.cpp', needed for 'all'. Stop.

    As I said, Clases.cpp should be generated from the slice definition Clases.ice. I am using the version 3.1.1. This is the Makefile I am using:
    top_srcdir = /home/fergarcia/Desktop/ICE/Ice-3.1.1

    DATASTORER = dataStorer
    GESTOR = gestor
    EMULADORDRUPAL = emuladorDrupal

    TARGETS = $(GESTOR) $(DATASTORER) $(EMULADORDRUPAL)

    OBJS = Clases.o \
    Getter.o \
    SubUnGestor.o \
    TC65Operations.o \
    RegisterSession.o \
    Storer.o \
    Drupal.o \
    Connectivity.o

    GEOBJS = Gestor.o \
    Database_RF.o \
    RegisterSessionI.o \
    DrupalI.o \
    SessionGlacier.o \
    ConnectivityI.o

    DSOBJS = DataStorer.o \
    Database_RF.o \
    StorerI.o \
    SubUnGestorI.o

    EDOBJS = EmuladorDrupal.o \


    SRCS = $(OBJS:.o=.cpp) \
    $(DSOBJS:.o=.cpp) \
    $(GEOBJS:.o=.cpp) \
    $(EDOBJS:.o=.cpp)

    SLICE_SRCS = Clases.ice \
    Getter.ice \
    SubUnGestor.ice \
    RegisterSession.ice \
    TC65Operations.ice \
    Drupal.ice \
    Storer.ice \
    Connectivity.ice

    include $(top_srcdir)/config/Make.rules

    LIBLITE=/usr/include/librflite2

    CPPFLAGS := -I. -g $(CPPFLAGS) -Iinclude -I$(LIBLITE) -I/usr/include/freetype2 `pkg-config --cflags glib-2.0`

    LIBS := -lGlacier2 -lrflite2 -lILUT -lIL -lILU -lGL -lGLU -lglut -lfreetype -lalut -lIceStorm -ldl $(LIBS) `pkg-config --libs glib-2.0 gthread-2.0`


    $(GESTOR): $(OBJS) $(GEOBJS)

    $(CXX) $(LDFLAGS) -o $@ $(OBJS) $(GEOBJS) $(LIBS) -lmysqlclient -lIceSSL $(OPENSSL_LIBS)

    $(DATASTORER): $(OBJS) $(DSOBJS)

    $(CXX) $(LDFLAGS) -o $@ $(OBJS) $(DSOBJS) $(LIBS) -lmysqlclient

    $(EMULADORDRUPAL): $(OBJS) $(EDOBJS)

    $(CXX) $(LDFLAGS) -o $@ $(OBJS) $(EDOBJS) $(LIBS)


    clean ::
    rm -f *~

    The problem is that if I uninstall the zeroc-ice package, I haven't problems compiling it with make. With the package installed I only have problems with the slice definitions; if I compile them by hand, I can do the make normally.

    Thanks
  • benoit
    benoit Rennes, France
    Note that build system issues are a bit beyond the support we can provide on the forums, especially if you use an unsupported distribution :). I still suspect this error indicates that the slice2cpp translator can't be found by the build system (even if it's in your PATH).

    You should review your Make.rules file and see if the SLICE2CPP and SLICEPARSERLIB macros are correctly set. If slice2cpp is in your PATH, you could simply set SLICE2CPP to "slice2cpp" and set SLICEPARSERLIB to an empty value.

    Cheers,
    Benoit.
  • Thanks for your help, I will notice you if I fix this problem.
  • Hello fgarcia! Have you tried to generate Classes.cpp manually (slice2cpp -I/usr/share/slice File.ice --output-dir generated), and then to type 'make'. I also use Debian and I have no problems. Here you are an example of one of my makefiles:
    CXXFLAGS=-Igenerated -I. -I/usr/include
    LDFLAGS=-L/usr/lib
    LDLIBS=-lIce -IceUtil
    
    all: Server Client
    
    Server.o: generated/HolaMundo.cpp Server.cpp
    Client.o: generated/HolaMundo.cpp Client.cpp
    
    Server: generated/HolaMundo.o Server.o
    Client: generated/HolaMundo.o Client.o
    
    generated/%.h generated/%.cpp: ../../slice/%.ice
    	slice2cpp --output-dir generated -I/usr/share/slice -I../../slice $<
    
    run:
    	./Server
    
    clean:
    	rm -rf *.o *~ Server Client
    

    Regards,
    David.
  • Hi David,
    I have no problems generating them manually, and then doing "make"; but I would like to use the structure of the Makefile that I have posted. By the moment I will continue compiling them by hand.

    Thanks anyway for your help ;) !!
  • benoit wrote: »
    Note that we don't support the debian packages, you should check with the package maintainer if you have any issues with these packages.

    I'm the Debian maintainer. Unfortunately I must say that as a Debian maintainer I just handle issues regarding the packages themselves. I do not provide guidance to new developers and I do not provide assistance to novice GNU/unix programmers.

    If there is an issue with any Debian package then a bug should be issued against the Debian Bug Tracking System. Otherwise you may just send me a request for a support contract and I will evaluate the conditions.