From owner-freebsd-gnome@FreeBSD.ORG Thu Aug 12 01:30:53 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 EFBA816A4D5; Thu, 12 Aug 2004 01:30:52 +0000 (GMT) Received: from anna.ana.com (anna.ana.com [69.22.155.168]) by mx1.FreeBSD.org (Postfix) with ESMTP id C1B6043D41; Thu, 12 Aug 2004 01:30:52 +0000 (GMT) (envelope-from eps@anna.ana.com) Received: (from eps@localhost) by anna.ana.com (8.12.11/8.12.11) id i7C1Uqas006300; Wed, 11 Aug 2004 18:30:52 -0700 (PDT) Date: Wed, 11 Aug 2004 18:30:52 -0700 (PDT) Message-Id: <200408120130.i7C1Uqas006300@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 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: Thu, 12 Aug 2004 01:30:53 -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.1. 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. 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-port.tar.gz M'XL("(:X&D$``V=U:6MA8VAU+7!OW?:N!*__^)/H:7IW613 M`^:5EF[VA(!#N.5U@#2]]_34Q]B">./7L4V3]/'=[TCR$PC@;)KNMJ@/+,W\ MI)%F-!K)#UO6C?R_OFTJ%,J%HTH%?FE:_*770H&P%*O%ZA&4"\5"L?*ORC>6 MBZ:YZ\D.-.E8EK>.;Q,]V:GBXPKY[9)-]#^;:]>RZ?\)4E+_7?D:3S4=/VX;H-I"M5R^3_^52C74?Z5<+!']5XH5L(/' M%6-U^LGU_PSU\`VR+<=SD6+I.E8\S3*1X1L"FEI.+1/8!_<,-64/(\7!\*/6 M,AFA@.KS&2K"%`?BY95E0&'FO];<03W9P.@<.QC][EH&GECJW8EJ&;)FYA3+ M^(-[!H"],P?CTU%S#W+C=K]WG!%RY9S`->ICL=4? MML71<888+YJ94#O7K8_&XE`:M<>$<.5Y=BV?5V3%F[LY9Z[C3SG+F>5MQ_H3 M>NA&%J]:-Z9NR6J>@RK:O3'\$X=0,QF0$U\Z`N4:_6Y7[(V/,T/L0O<4C$15 M\RR'C!`:$$'Z(^3>N1XV7(X[$\>-$^39^]SK]\1W;9"Q-_Y:V_M, M.C9JMH=?\RK^B/6\KDU<;:8<'M:4*ZQ.;(]I6FN/FV(<]P5YYIRG4(YCKMTZC7C)BK;L1SW,5(E-Y)@Z%X MUGYWG+G#+BUI]?K$'&!P9KJL8J;JCU.?V&@<9TJY$LMTZV]$!LQI4Z2"\9I8 MW;]LC\_[%V.IUQD=@`9[9^W6Q5"4ZL/6Z/`XP_.JYLH3'?.F[G*##G17&EV< M`@7XC[,G8*8&-CV4Y4Z'_39=(0`@OS(UR^6P M[F(FES@>B^_&3+*E%@BGJ6I3RCH0AYV*='K1[C2C$8#Q'/?['>DM,4J!]74H MMGN#3KWA][?5NY#"KK&B%3TE4O)@)H;!VPZ,SNWQWN?+X1NB$J)QGX'8X#HZ M,Q9BK!&9V&ZL1;'W%AJDFB/2,X(TJ(_/8Q#L*3#=>A?U#E`:;^HM,=YQ6ENG MW1B/(E?`"[G*;RC,T5G#_\9QMN5Z/+[U')CJ-0X,MS'XBGA[B-;,,=_$U\VE M#2QLSJ"P0R"'@WE;]I0K$.)D[[/8..]_1=GCXV-T.M=T53-G"!8:3U-0)`90 MLT3D4*%2H]L$Z3'Z-?^AW1N-ZYW.2!J=PS#F7PCNEP]?GGWYU9OJ>SY#W$GM4R]1V$!?6',2-O=E$V#.ZWXC8/2_DQDPB7QG M[_/6Z$+_2[#2]_K$5S?[C1&M)#0`\5V].^B(U(DGEP>H?31L@&G'(LG6_.O6<+#4AK^B@W2FHL\A:/E]XJHY$D_FC.L_ MN.\=[R^FY/X/S-#3S*GUN&ULV/\5A'*5[O_*U4)1*!?H_J]4VNW_GB)UFQ6T M'PNR8(N5@P')S3X=H&.D%DL57%)D63UZ.2U/7I:%5P6A.BE6U-)D4BT7N5'[ M?^(:O"!4J]7*J[^=U>]2D)+SGZP'[J.?`FY__E<$:ZF2^5\^*A9WYW]/D%;I MG^YC>%E^K#8V^']P_P+3?Z%\5#VBYW]@"L+._S]!XF$;>VOHO":\-'D#.S,, M@4O.U\LM:J<+8 M3TX07ZR47QRA0_9S_7GZ/([&ON\(%5$6%)A:KLR4N5(B;[,^1B?(T(558\[*"@'X@RTF@7 M);"P@$*=!U`!&:I7KZIDJ-@/&2J2(-3=W^M>=,9M"#2E_L5X<#$^"$:+)'(* M23JDR]#0O@OA)KK&=RYZ;ENT>ZXTN9,(D:(R09WH%[()8BA"X3-!A<:UJCD^ M!>I6-=@K-633M#S_^)>H$%BPXEF.WW`-[?WRWB3CNZJ:%ZAP='24OC(43U^3 M6?`-0"MF-Z05PG;V@&)KZ&,!/QX/H@3PIYLJ/E M#E?2Z=%"C`N12ZE9']>C1FF+!Y&$A(4T*-NVKBGT5H"[5'&,R#MX!OMJYXX[ M7`MALJP$HC@P$"\4*$XDJ]`SU%8LD^,U^'^I%5N[-63;Y0Y74ID,`0\B/$O- MV;`BA#N^N+BW?%C\JDK8F#"MAF5.D:M<84/^T=SG/SZM\?_*8[6QP?\7BY7` M_Q\)Q9+@^__2SO\_02+^WW64;=Q_+/I?0"QX_\JK6KD4\_XL]A?"V']T<=IL M#T?@4VXT%38!+HE>#1ZS^^D:>.&F?Z/49]O;]Z\/4.B:.+[=:W0NFB)C:(W? M=+M2XZQ3;P$7Y,D-R$3)V[-1D,M`0E#TKMN)0SKUIAC+#]KO3B_.%C$M/@P3\:KTVK-LR<_GX3=D:[);I6VH%GIX_#Z;77;6 MV??9!79Z_T=*!]7L53@N<.?P*%)M;7^*#]L%I%Y$]3''3:ITRQ1$?T7"KOU_PE2L/['5N!M8H%J M,A:X!TV!)"X0"JA0J)&_B;A`8'&!X,<%RNWM5)=GKN1BCYSYQ?-`UDF9?O*] MEO[=@I[&]>>_VXJ^6ZNH(%X7E%8DT0`GP@7 M4#K3[^PKGQPDY%>E8_)`)67/).EL)T`I_F70`,OR'S4WE"-!C< MT_0X"\TG!01F![O:)TR>PJ&\L6Q0753$1^(N%U)VA.2Y9_')2A>+?$X/WWIS MF8D87`=M^H_+^M0HMR2^+D\P8V)70063N>=9)B7XEXJ"&,F>NUN%W M#V2T[+D=KS]9$%3N*HZEZQ.9V4>4"R0EP\I/-:RKX2C[V9`CU+R74#HQW(GF M@1\(IX"?#54DAZ;K7Q+*/R1B71/_/=I;()O.?PKE5><_N_/_ITA!_*=9#PC[ MDJ#E:$]XN=4IT*VA(T>QUQS[_+68;R&,\+?]&T.)7=#WU$'?]U;4SQKUF19Y MJ):O_]+':V'3^4RJN6O\KN_7_"5*P_OMW M8K8)`BK)(&`%*G6T$>N'X\;/5XLI7^>ZIC MU;K^HRJ%+NBP>OO34I*E4?]BV*!*\JS93,?AEC^1#7?B1YF03DX](H98+N2@QR-,J/"TQ,^&/([_]C6O6,;$`K:%@H6C MGX`KD8U$=BP;.]Y=L/=/YL-3#L_1S!D?'%#$LV%-Y$"!$.FO$H:;0871(=IB M273\X,3E363#5HB-A"R96&[A-"@I-&_9+O`OEH28!0)O.]K'\)AM)7$ME`\T M`G6@;=C\(Z![V,*3MBV8%&47KZ9,R?C/OIZ!)W$5YU';V/3^5[G`GO^O%,CW M?P3V_M=1=1?_/4%J^:I'FHMD1%?$^,.&]+GR\-09$:=%GF2WIJ$CYM@CFL%7 M,/HC?B*[6(7E0+F&<(Y\+V'N8<=]P3Z4(*.YBQVDF5`VE0$.]6!CHI-:6V3A MS'%5E#VW__XV=W M&,OSWR:N]5';6#__!=CX5?WWOPJP[:/O?U7*Y=WS?T^1)IH9JI^+9XKD1!9[ M2GZF6.8TSQ[?C28.'[\7Z!/7L8<3/F2F[[ZO>>@YQ":?;UZ`N?DF^;B'99,; MBQ$$%K%KV"FWLBSVS@0&GF&OI8Q<1MT$W/TB1)+X0EW3G'=K1`Y M0$PLZWHMLV:J^':S%#`:\ZU%MC5PD^"'\[*JDK",/KJ]%8`-(81?IFK=I(7- M'&N>'AM3!OG6P4<-W_`S!]^Y9+?VEZIY&)C=SGT8EMTK!;-^&)R\H;0]DGQY MRQ]M\M1^.D7'P"E`,2/<&@0+$O:\%/TB'[S`#C:5-/TAVS!>A?_(][]2PC0U M)8`\DI`.D!**[WW1`NC5."6&;_TV@\`@`#'2SMPNXMW#\ M,ST8V_ZAEF3%\KRCR\>2-HDT\]`6C.(]_O?NED'C3,DCI[`*<\F MEJ[FO%OO7@;ZC,_]#`!?SZ'C#0RNMXGASH!F-M$%81/'T2H&>G(7#17-+O+$ MS]LP6:YY/1I$7I:A)D:8:='>.D1TNDP+V9JV,>T""^U://4 MUG*SP2*#+W8]AQ3[AM;SY_G&E6S.<,>:K>4*OV"V#5-.-K;CT\RU?$.QWNR* M:UE<^D$QLDAO)V*,G\;9),;/*>DA5UM#(#!/T0#AWKIN"*_FNN>F[$0"M75; MT>7V+<4PX;E'''JB:HYCH/MKV(*;\XNWB72WX-W(LL"0B'?NH;'89C4M%D:L 7YOC9#TUW:9=V:9=^@/1_F!ORC0!F```` ` end Run make as a non-root user. Be warned: this part will probably take a long time! As root: make install make package The resulting guikachu-1.4.1.tgz can be redistributed at this point, but we really should put things back to normal on the build system: pkg_delete -v guikachu-1.4.1 pkg_delete -v ImageMagick-5.5.7.16_1 Now you can: pkg_add -v /path/to/ImageMagick-5.5.7.16_1.tgz [the real one, if you saved it earlier; otherwise, use sysinstall as before] pkg_add -v guikachu-1.4.1.tgz You should now have a properly installed Guikachu! Hints: HTML help installs in /usr/X11R6/share/gnome/help/guikachu/C/ If you're using WindowMaker, copy guikachu.png (/usr/X11R6/share/gnome/pixmaps/) to ~/GNUstep/Library/Icons/ so you can display an appropriate icon on its application tile. What's next? Again, I'm looking for someone else to take over all responsibility for this port; I've spent as much time on it as I care to. Important: I don't recommend committing something without first figuring out why it crashes (badly!) if you select a font for a label that uses code points that aren't in the font. Minimal case: Launch guikachu. Click Add, OK. Double-click on FORM1. Click the large A on the Widget palette. Then click somewhere on the form to place the object. Click again to bring up the label's Properties. Change the Font from Regular to Symbol11. This will generate either a Bus error or a Segmentation fault. It's probably really simple to fix, but someone else is going to have to pursue this. Please continue discussion on the freebsd-gnome mailing list; any replies sent directly to me will most likely be discarded unread due to [necessarily] highly aggressive spam-filtering. Thanks in advance for your time, and congratulations are in order for anyone who achieves a successful outcome. Cheers, -=EPS-