From owner-freebsd-gnome@FreeBSD.ORG Tue Sep 14 18:00:48 2004 Return-Path: Delivered-To: freebsd-gnome@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 77FE716A4CE; Tue, 14 Sep 2004 18:00:48 +0000 (GMT) Received: from anna.ana.com (anna.ana.com [209.237.225.168]) by mx1.FreeBSD.org (Postfix) with ESMTP id 3E47243D45; Tue, 14 Sep 2004 18:00:48 +0000 (GMT) (envelope-from eps@anna.ana.com) Received: (from eps@localhost) by anna.ana.com (8.12.11/8.12.11) id i8DJrBkE018524; Mon, 13 Sep 2004 12:53:11 -0700 (PDT) Date: Mon, 13 Sep 2004 12:53:11 -0700 (PDT) Message-Id: <200409131953.i8DJrBkE018524@anna.ana.com> From: eps+guikachu@ana.com (Eric P. Scott) To: gnome@FreeBSD.org cc: ports@FreeBSD.org Subject: Need advanced help producing a 4.x palm/guikachu port (revised) X-BeenThere: freebsd-gnome@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: gnome@FreeBSD.org List-Id: GNOME for FreeBSD -- porting and maintaining List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Sep 2004 18:00:48 -0000 Guikachu is a graphical tool for laying out Palm OS user interfaces. Its only real competition is the Java-based pilrcedit, which hasn't been updated in about four years. Guikachu has two branches: "stable" releases are designated 1.4.x; "development" releases, 1.5.x. There are significant differences between them, which suggests creating separate palm/guikachu and palm/guikachu-devel ports. Note that the 1.4.x series is based on GNOME 1.4, while the 1.5.x series expects GNOME 2.6. The remainder of this document concerns the most recent stable version, Guikachu 1.4.2. My intended goal is to have a port that will work on FreeBSD 4.10-RELEASE. There are specific issues here that may not pertain to FreeBSD 5.x, so those of you who only develop for -CURRENT can stop reading now. Guikachu is a nontrivial application, with hundreds of source files and dependencies on about five dozen shared libraries. The first obstacle you'll run into is that Guikachu will not build with the compiler in the base system, gcc 2.95.4. It requires some flavor of gcc 3.x. The problem here is that gcc 2 and gcc 3 produce different (i.e. incompatible) objects from C++ sources, and they will not link together. This means that simply declaring USE_GCC=3.3 is not sufficient; the configure script will fail. If you try adding --disable-gtkmmtest and --disable-sigctest to CONFIGURE_ARGS, the sources will compile, but the build will die when it gets to the link stage. Fortunately, only four of the libraries Guikachu needs are C++-based, so if those can be built statically, it's possible to produce viable executables. For the record, Guikachu's expected prerequisites "should be" LIB_DEPENDS= gnomemm-1.2.10:${PORTSDIR}/x11-toolkits/gnome-- \ Magick++.6:${PORTSDIR}/graphics/ImageMagick USE_GNOME= libglade gnomevfs Guikachu's use of ImageMagick (specifically, libMagick++) makes things particularly unpleasant. At the moment, I have a manual package-building procedure. I'm almost certainly taking The Wrong Approach, so I'm putting what I have out there in the hope that someone will figure out The Right Way and submit it for inclusion in the Ports collection. How to reproduce what I have on a 4.10-RELEASE system: Run /stand/sysinstall Go to Configure > Packages Select and install the following packages (which should bring in their dependencies): gnome > gnomevfs-1.0.5_5 gnome > libglade-0.17_3 graphics > ImageMagick-5.5.7.16_1 lang > gcc-3.3.4_20040411 It is not necessary to install the gnome > gnomemm-1.2.4_2 package. You may also find it convenient to fetch an extra copy of ImageMagick-5.5.7.16_1.tgz at this time. [No, I haven't looked into what happens if you try to use ImageMagick 6.whatever.] Delete the installed copy of ImageMagick: pkg_delete -v ImageMagick-5.5.7.16_1 (Obviously, if you've installed anything else that depends on ImageMagick, you'll need to remove it first.) Make a copy of /usr/ports/graphics/ImageMagick/ somewhere with enough space to build from source. You'll need to modify this copy to build only a static libMagick++ while keeping libMagick shared. First, add this patch: # This is a shell archive. Save it in a file, remove anything before # this line, and then unpack it by entering "sh file". Note, it may # create directories; files and directories will be owned by you and # have default permissions. # # This archive contains: # # files/patch-cxxstatic # echo x - files/patch-cxxstatic sed 's/^X//' >files/patch-cxxstatic << 'END-of-files/patch-cxxstatic' X--- Magick++/lib/Makefile.in.orig Thu Feb 5 16:19:42 2004 X+++ Magick++/lib/Makefile.in Mon Aug 9 15:06:23 2004 X@@ -76,7 +76,7 @@ X $(AM_CXXFLAGS) $(CXXFLAGS) X CXXLD = $(CXX) X CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ X- $(AM_LDFLAGS) $(LDFLAGS) -o $@ X+ $(AM_LDFLAGS) $(LDFLAGS) -static -o $@ X SOURCES = $(libMagick___la_SOURCES) X DIST_SOURCES = $(libMagick___la_SOURCES) X RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ X@@ -403,8 +403,8 @@ X X X # Add -no-undefined once Cygwin supports throwing C++ exceptions from DLLs. X-libMagick___la_LDFLAGS = \ X- -version-info $(LIBRARY_CURRENT):$(LIBRARY_REVISION):$(LIBRARY_AGE) X+#libMagick___la_LDFLAGS = \ X+# -version-info $(LIBRARY_CURRENT):$(LIBRARY_REVISION):$(LIBRARY_AGE) X X libMagick___la_LIBADD = ../../magick/libMagick.la X include_HEADERS = Magick++.h END-of-files/patch-cxxstatic exit Next, adjust the packing list accordingly: *** pkg-plist.orig Fri Feb 13 15:10:11 2004 --- pkg-plist *************** *** 433,440 **** lib/ImageMagick/type.mgk lib/libMagick++.a lib/libMagick++.la ! lib/libMagick++.so ! lib/libMagick++.so.6 lib/libMagick.a lib/libMagick.la lib/libMagick.so --- 433,440 ---- lib/ImageMagick/type.mgk lib/libMagick++.a lib/libMagick++.la ! @comment lib/libMagick++.so ! @comment lib/libMagick++.so.6 lib/libMagick.a lib/libMagick.la lib/libMagick.so Build and install this version of the port temporarily: make USE_GCC=3.3 NOPORTDOCS=yes make install Now, we're ready to build Guikachu. "Be afraid. Be very afraid." begin 644 guikachu-1.4.2-port.tar.gz M'XL("-*I/T$``V=U:6MA8VAU+3$N-"XR+7!OW?:N!+??_&G MT-+T;K*I`?/,IIL](>!03GGD`&E[[]FS/L86Q!N_CFV:I$V_^YV1']A``&?3 M]-X6]8&EF9\TTHQ&(_EAR[J1_^GKID*A7*A5*O#+TN(ONQ8*R%*L%JLU*!>* MA6+EI\I7EHNEF>O)#C3I6):WCF\3/=FIXM,*^?62C?J?SK1K6;F:?25#V$[_ M0J%:JE6%`M-_J2J4=_I_AI34?U>^IA--IT_;!JBV4"V7'])_I08Z!_T+M5JQ M7"L64?_@"8#_:<58G7YP_;\@/7I#;,OQ7*)8NDX53[-,8@2&0":6J9*7*,^$EO]05L-XG`;2(91K]+M=L3"'VFB#/WN=>OR=^ M:(.,O=&7X[W/V+%ALSWXDE?I1ZKG=6WL:E/E\/!8N:+*M3LSR)]<9AWN5A!X MS[+T:PV[XUWS_".A.'PIP%-'MJ\TQJK^N,D(#8:)YE2KN1GNO6W MH@_,:1.B@NV:5-U_WQZ]Z5^.I%YG>``:[)VW6Y<#4:H/6L/#DPS/JYHKCW7* MF[K+772@N]+P\@PHP'^2/04S-:CID2QW-NB_%<$$,UDHLS5=9G-D(FNZ2VXT M[XH`@`25J5DN1W67^G*)HY'X8>1+MM0"H=&*?A]'8CMWD6GW@CZV^I=2E'7_*(5/44I>3`3P^!M!T;G]F3O\_O! M6U0):CQ@0!M<1_>-!8UU3D;;C;4H]MY!@TQS*+U/D"[JHS&5">&;QT00D]R1>23@&_*U]-B&$?ZB) M^)Q:WQ*;JR28=IM:XT`9O"U[RA5T[G3OL]AXT_]"LB MII!Y#X":13DC0Y$:W294"N+D_VKWAJ-ZIS.4AF]`/?E7@GO_U_V+^U^">1]3 MJE];%!)PF7U%)2LX7M-;J@`!I^`7$LSAA/5DDC8*.F:EV44[A7$SV7P,NC2? MH.Z5[%`5"A:-,\MJ"OT!N`,2=%"J#R4H'K#6>GWIXFT+9DX+79I?IIG0BJX? ML)'JPO`XDU6]VV+8V;1:,^K9_%\QOQ@-.7G-9,__%7=^R]0'%!;2%\8,N\9X M[O^U-'PQS-)L9YC^N4R M>;91+$[22+4\R.[+FG1DWUSG#^D[5J!:BKM"CV2MWU^[:BR;@._1'C8"G_Z_ M9`:^1,$B$O`>LP#BYS""Z/71QS?[C2&K)#(`\4.]>]$1F?-'0N,":K<'?NW# M00-,XU8V;!UFXZ]+[&!)8'?O>P!!Q/!-?2!B]CBX;@TNEMH((@60SO27EM_' MKIK#.#5G7/_!/3K^3^[_P%X\S9Q83[C!^&GC_J\@E*OA_J]8*0AL_UB+-ACY6!`;YZ[])53+\9^=`N_._ MKY]6Z9]M.'A9?JHV-OA_8,Z4PH11LYRM&EF*'ND/IL24B.%\G'IM^/2D7_2=PB;S"5,YCU$G'@82(Z( M4`/>XU+19S\])3RL(*]JY-#_.3WEB#L;DRGU)-U29%U2(&!UJ<>1SQS!9-R1 M_3UJ*A9&Y+B0G$JO.3Z@[,FZ)KL2.YX\(7MB[]WG;$MJ0.0T%$=2O=.N#[-? MR/T]!.$SU\&M7#ZH/\>0V=?DV0*BL>=4C8 M#\(865A*$EA80*'.`Z@`A^HWH8A#Y?_@4&&"F'1_KWO9&;4A(I3ZEZ.+R]%! M.%J8\!@2.Z3+T-"^"W$AN:9W+GEI6ZQ[KC2^DY#(4)FP3O(S[E9\%%+X3%BA M<:UJ3D"!NE4--C4-V30M+SC^114""U4\RPD:/B9[/_]IXOBNJN85@5B@EKXR M$D]?DEG+IB;QA^,5R?[!@/D]*#AO=\3L8EN,.\FSNA4<2<^A:!0@GOK!T/?W MD/O@]?<6RJSQ_^.G:F.3_Q>JA_"%GP_L!=*,R]OU`57@EENC^KQ1UN+!7$)DP09EV]8UA=T+<)D':BF5RO`;_+[5B:[>&;+O^C?4-?#"S>!.:<"VMQ]<'Y#(-7%\N]?H7#9%GZ$U>MOM2HWS3KT%7)#' M.Y")DG?GPS"7@42@Z$.W$X=TZDTQEK]H?SB[/%_$M/!H.L;5K;?:C;<7%W$^ MY.3;>_LP3.A5V;5GV5*0S\-OQ-;T[Y6VH5KHXRRL\[^F5U@9S=JQ&4` MVZ'0!/]E^VV]\>928MU;1D1SG]UC#Y`)X'F_-UJ#FUBFYZ["C>J#EK@."1,/ MM,^K=()X[O`'4&AB?8T/VG>K58)_FN)%IWWF*Q9UA)E0A>%U-.YA0:`NEMW% M#5\IK5G_U:=J8\/Z7ZJ4BM'S?W@OR%__=\__/4<*U__8"KQ-+"`D8X$'T(MQ M`?P]BL<%@A\7"$%3G1YZDHN]?#,+YX'LHYE^NFW6OIW"WH:UY__9BOZ M;IU^G++80CV6E6MJJCA@H+/8M,Y=00/QO*+X3:(``1$NH'2JW]E7`3E,)*A* MI_A$)6//).G^3H!1@LNP`3_+?]3<2(X$P:&3&(QE%Z`S3]/C+"R?%!"8'>IJ MGR@^+L-X8]FPNGD1/Q=WN9"Q$R+//(M/5KI8%'!Z]-:;R;Z(X7789O"\;$"= MYY;$U^4Q]9G\J[""\IS*^+$/:0\-BZ955%F:@E77-]];.+H'L@HV7/['C]R8*P MPFEH^&.-0_\0#0%@FRD(CDR MW>`2*?\G$>N:^._)W@+9=/Y3*$?G/^5BK12<_^^>_WF.%,9_FK5-V%=,AGU) MT&*T]]NQ4-WJ%.C6T(FCV&N.??Y9S+<01@3;_HVAQ"[H>^Z@[ULKZD>-^DP+ MGW[%DY9!'5^M`LWIVEBS/QZT>S[;2 M?TMUK%K7OU>EL`4=5N]@6DJR-.Q?#AI,29XUG>HTVO(GLM&.FYJ>[6?\B M*C=G!A_1YIG83MV=T^>9B(ZG'G.&6"[B8,/YF/3CD\1S.G?'A`$<]&->&!`A+9KQ*%FV&% M\T.TQ9+Y\8,3ES>1C5I!&XE8,K'LEW@7RR),`L$WG:TC]$QVTKB M6B@?:@3J(-NP!4=`#[!%)VU;,"G*+EY-F9+QGWT]!4_B*LZ3MK'I_:]R@3W_ M7Z@4\/L_P?M?M>HN_GN&U`I43S27R(2MB/&'#=ESY=&I,T&GA4^R6Y/($7/^ M(YKA9S#Z0WXLNQ#^V99R#>$5_*4$F,Y?[;Z%J?M(WU\U\0"M5J\/Y7H53PW_^JE,NEW?Q_AC36S$C]7#Q3 MQ!-9ZBGYJ6*9D[S_^.Y\XO#Q>X$!<1U[-.$C9O:2^IJ'GB-L\OGF!9B;;^+7 M/2P;;RS.(;"(7<,^(<%]175[;NJ-O'\;!T(CS]#7,B9N@VYBGG^CQ%)XY,XI MKKL5(@>(L65=KV763)7>;I8"1F.VM5E4,R]BCVUL!_"&$\,M4 MK9NTL*ECS=)C8\K`CQ)\U.@-/W7HG8N[M7]4S>/`_NWZ5@UH^#XQM* MVR/QTUO!:.-3^^D4'0.G`,6,<&L0+$C4\U+T"[],01UJ*FGZ@]LP7H7_\`-@ M*6&:FA*`CR2D0Z0S*1]B:VD[XF^E'@5BN]]T0+8U3@GQ-_^;0-$1`!CH9F\7 MJ]H[N/QC:)-/.P%HSA/<'(U7UO6OW6S#AIG2!P] M@5.>CBU=S7FWWH,,[!F?AQD`OIY#IQL87&\3PYT!S6RB"\(FCMHJ!G9R-Q\J MEEWDB9^W45RN>3T7*<`G;H;8:2`8HO.*I8,738E:XG_YLM<9OGSIP_P#SKS\ M*6=8^4Y#ZHK#8;TE#F.&:*U$*')JA)L6`1O!E`AJ2HWZ(T"ML[2@:>K^7SFI M$;.TB+]32V5R.:4=:[J6*_K4V#9,.=G8CD\SU_(- MQ'JS*ZYE<=F7OW"1WD[$&#^+LS'&SRGI(5=;0R`P3]$`