Wo sehe ich die Compilierungsoptionen bei Packages oder in den Ports ?

sewin

Entwickler
Hallo,

ich verwende meist Packages vom FreeBSD-Server. Soll heissen, ich kompiliere meine Software auf meinem System nicht selbst. Jetzt kommt es aber häufiger vor, dass man bestimmte Sachen nur machen kann, wenn eine Software mit der Option XYZ kompiliert wurde.

Zum Beispiel kann der Icewm mehrere Formate ausser xpm wenn er mit der imlib-Option kompiliert wurde. Nur weiss ich nicht, ob dem so ist oder nicht. Genauso kann der Postfix SMTP-Auth, falls es einkompiliert wurde.

Jetzt könnte man natürlich sagen, ich solle einfach selber kompilieren, dass will ich aber nicht, weil mir das zuviel Aufwand ist. Darüber kann man natürlich streiten, oder noch besser: es lassen. Da spezielle Optionen für mich meist unnötig sind, konnte ich bisher auch gut damit leben. Aber es würde mich einfach mal interessieren.

Wie bekomme ich also raus, mit welchen Optionen ein Package kompiliert wurde ?


grüsse von sewin
 
Die werden packages aus den Ports erstellt. In den Ports gibt es jeweils ein Makefile....
 
Hallo asg,

erstmal danke für die schnelle antwort.

das makefile (z.b. vom icewm) hab ich mir schon mal unter den ports im inet angeschaut. da sah ich aber nur die cvs-einträge der changes. ich muss das ding natürlich downloaden und reinschauen. da sehe ich dann die meisten optionen. ich bin wohl ein kleines trottelchen.

so ganz 100% sehe ich aber auch nicht alles, weil variablen verwendet werden, deren deklaration ich nirgends sehe. und ich check auch nicht ganz, woher ich jetzt wissen soll, ob der rechner auf dem compiliert wurde, z.b. gnome hatte. aber so wie es aussieht ist die imlib nur drin, wenn dem so ist.

.if ${HAVE_GNOME:Mimlib}!=""
USE_GNOME+= imlib
CONFIGURE_ARGS+= --with-imlib
.else
USE_XPM= yes
CONFIGURE_ARGS+= --without-imlib
.endif

ich hänge mal das icewm-makefile an. vielleicht kannst du mir das mit der imlib und gnome noch erklären. die frage also: hat das package imlib-support oder hat es keinen ?

aber im grossen und ganzen hat mich deine antwort auf jeden fall erstmal ein wenig weitergebracht.


sewin


icewm-makefile:

# New ports collection makefile for: icewm
# Date created: 10 August 1997
# Whom: Yukihiro Nakai <Nakai@Mlab.t.u-tokyo.ac.jp>
#
# $FreeBSD: /repoman/r/pcvs/ports/x11-wm/icewm/Makefile,v 1.95 2004/03/16 22:54:05 marcus Exp $
#

PORTNAME= icewm
PORTVERSION= 1.2.13
PORTREVISION= 1
CATEGORIES= x11-wm
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
MASTER_SITE_SUBDIR= ${PORTNAME}

MAINTAINER= ports@FreeBSD.org
COMMENT= Window Manager designed for speed, usability and consistency

USE_GETTEXT= yes
USE_X_PREFIX= yes
WANT_GNOME= yes
USE_GNOME= gnometarget
USE_REINPLACE= yes
USE_GMAKE= yes
GNU_CONFIGURE= yes
CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include -I${X11BASE}/include" \
LDFLAGS="-L${LOCALBASE}/lib -L${X11BASE}/lib"
CONFIGURE_ARGS= --enable-shaped-decorations \
--enable-guievents \
--with-cfgdir=${DATADIR} \
--with-libdir=${DATADIR} \
--with-kdedatadir=${LOCALBASE}/share \
--with-docdir=${PREFIX}/share/doc \
--with-mkfontdir=${NONEXISTENT}

.include <bsd.port.pre.mk>

.if ${HAVE_GNOME:Mgnomedesktop}!=""
USE_GNOME+= gnomedesktop
CONFIGURE_ARGS+= --enable-menus-gnome2
INSTALL_TARGET= install install-gnome
PLIST_SUB+= GNOMEDESKTOP=""
PKGNAMESUFFIX= -gnome
.else
PLIST_SUB+= GNOMEDESKTOP="@comment "
.endif

.if ${HAVE_GNOME:Mimlib}!=""
USE_GNOME+= imlib
CONFIGURE_ARGS+= --with-imlib
.else
USE_XPM= yes
CONFIGURE_ARGS+= --without-imlib
.endif

.if ${HAVE_GNOME:Mesound}!=""
USE_GNOME+= esound
CONFIGURE_ARGS+= --with-icesound=esound
.else
CONFIGURE_ARGS+= --with-icesound=oss
.endif

.if ${XFREE86_VERSION} < 4 || defined(WITHOUT_XFT)
CONFIGURE_ARGS+= --enable-corefonts --disable-xfreetype
.else
LIB_DEPENDS+= Xft.2:${PORTSDIR}/x11-fonts/libXft
.endif

.if ${XFREE86_VERSION} < 4 || defined(WITHOUT_XINERAMA)
CONFIGURE_ARGS+= --disable-xinerama
.endif

.if ${ARCH} != "i386" || defined(WITHOUT_X86_ASM)
CONFIGURE_ARGS+= --disable-x86-asm
.endif

post-patch:
.for file in src/gnome2.cc
@${REINPLACE_CMD} -e \
's|/usr/share/control|${X11BASE}/share/gnome/control|g ; \
s|/usr/share/app|${X11BASE}/share/gnome/app|g ; \
s|/usr/share/gnome|${X11BASE}/share/gnome|g' ${WRKSRC}/${file}
.endfor

post-install:
${INSTALL_DATA} ${FILESDIR}/bsd-daemon.xpm ${DATADIR}/taskbar
.if !defined(NOPORTDOCS)
@${MKDIR} ${DOCSDIR}
.for file in CHANGES INSTALL README TODO
${INSTALL_DATA} ${WRKSRC}/${file} ${DOCSDIR}
.endfor
${INSTALL_DATA} ${WRKSRC}/doc/*.html ${DOCSDIR}
.endif
${CHOWN} root:kmem ${PREFIX}/bin/icewm
${CHMOD} 2555 ${PREFIX}/bin/icewm

.include <bsd.port.post.mk>
 
Ok, jeder hat seinen Grund warum er wie was macht.
Aber warum baust Du das entsprechende Programm nicht einfach aus den Ports? Dann nudelt die Kiste eben mehr oder weniger lang aber Du hast Dein Programm aufm Rechner.
 
Hallo,

ich habe befürchtet dass das (trotz obiger versuchter umgehung ;-) ) noch kommt. Aber halb so wild. Nur habe ich darauf wahrscheinlich nicht die tollste Antwort. Es ist eine Mischung aus:

a) meine Programme laufen als normale packages schnell genug
b) keine lust bei jedem software-update lange zu compilieren
c) keine lust alle quellen zu ziehen
d) kein dsl
e) mein script ladet die packages, das geb ich nem dsl-kumpel und gut
f) kein bedarf die ports zu installieren
g) kein bedarf selbst zu kompilieren
h) geschmackssache bzw. computerwahn

Nun, ich denke der eine will halt seine sachen so und der andere will sie so (btw: ich finde das ist auch das tolle an bsd. dort ist man halt nicht so eingeschränkt und kann alles nach lust und laune so machen wie man es will. und wenn man pre-compiled binaries will, dann hat bsd das beste system der welt, finde ich). Daher schätze ich, es ist bei mir einfach geschmackssache. ich will und brauch die ports eigentlich nicht. darum die packages.

aber bist du nun schlau aus dem GNOME-Part geworden ? Verstehe ich das schon richtig, dass das makefile abfrägt ob gnome installiert ist und wenn ja mit imlib-support compiliert ? und hast du vielleicht noch ne idee wo ich das sehen kann ?


grüße und dank,

sewin
 
Zurück
Oben