Patches in einem Port hinzufügen

strongarm

Member
Hallo

Ich probier grad den ruby-rmagick port upzudaten, so dass ruby-rmagick auch unter FreeBSD 4.x läuft wie es im Moment nicht der Fall ist. Der Port Maintainer scheint mich zu ignorieren oder ist in den Ferien. Darum hab ich beschlossen, diese Arbeit nun selbst zu übernehmen.

Ich hab mit diff einen Patch erstellt und schon im Makefile drin. Der wird auch schon runtergeladen wenn ich im Port "make" tippe aber er weiss nicht welches file er modifizieren soll. Das Problem ist, dass der Patch unter /usr/ports/distfiles/ruby liegt und ein File in /usr/ports/graphics/ruby-rmagick/work/RMagick-1.8.0/ext/RMagick/ patchen muss. Kann mir einer sagen wie ich das bewerkstelligen kann?

roadrunner # make
===> Patching for ruby18-rmagick-1.8.0_1
===> ruby18-rmagick-1.8.0_1 depends on file: /usr/local/bin/ruby18 - found
===> Applying distribution patches for ruby18-rmagick-1.8.0_1
File to patch:

File to patch fragt make, weil nicht bekannt ist, wo der Pfad liegt.

Hier das Makefile:

# New ports collection makefile for: RMagick
# Date created: 16 November 2002
# Whom: Akinori MUSHA aka knu <knu@idaemons.org>
#
# $FreeBSD: ports/graphics/ruby-rmagick/Makefile,v 1.25 2005/03/22 13:06:07 pav Exp $
#

PORTNAME= rmagick
PORTVERSION= 1.8.0
PORTREVISION= 1
CATEGORIES= graphics ruby
MASTER_SITES= http://rubyforge.org/frs/download.php/4265/
PKGNAMEPREFIX= ${RUBY_PKGNAMEPREFIX}
DISTNAME= RMagick-${PORTVERSION}
DIST_SUBDIR= ruby

PATCH_SITES= http://www.ugly-sheep.org/
PATCHFILES= RMagick-${PORTVERSION}.patch
PATCH_DIST_STRIP= -p1

MAINTAINER= knu@FreeBSD.org
COMMENT= A Ruby binding for ImageMagick

BUILD_DEPENDS= wmf2eps:${PORTSDIR}/graphics/libwmf
LIB_DEPENDS= Magick.8:${PORTSDIR}/graphics/ImageMagick

USE_RUBY= yes
USE_RUBY_SETUP= yes
RUBY_SETUP= install.rb


CONFIGURE_ENV= CFLAGS="${CFLAGS}" \
CPPFLAGS="-I${LOCALBASE}/include -I${X11BASE}/include" \
LDFLAGS="-L${LOCALBASE}/lib -I${X11BASE}/lib" \
RUBY="${RUBY}"
CONFIGURE_ARGS= --doc-dir="${RUBY_MODDOCDIR}"

DOCS= ChangeLog README.html

.include <bsd.port.pre.mk>

#.if ${OSVERSION} < 500000
#BROKEN= "Does not compile on FreeBSD 4.x"
#.endif

# XXX should be resolved in 1.7.2
.if ${ARCH} == "amd64"
BROKEN= "Segfaults during build"
.endif

pre-configure:
cd ${CONFIGURE_WRKSRC}; \
${SETENV} ${CONFIGURE_ENV} ./configure --prefix="${PREFIX}"

post-install:
.if !defined(NOPORTDOCS)
${MKDIR} ${RUBY_MODDOCDIR}
.for f in ${DOCS}
${INSTALL_DATA} ${WRKSRC}/${f} ${RUBY_MODDOCDIR}/
.endfor
${MKDIR} ${RUBY_MODEXAMPLESDIR}
${INSTALL_DATA} ${WRKSRC}/examples/* ${RUBY_MODEXAMPLESDIR}/
.endif

.include <bsd.port.post.mk>
 
Zuletzt bearbeitet:
Du kannst den Patch einfach im Unterverzeichnis "files" im Portverzeichnis ablegen. Dann wird er automatisch eingepflegt. Guck Dir einfach alternativ andere Ports an, dort ist das auch überall so (z.B. /usr/ports/science/gramps).
 
Bestens. Wenn's ein sinniger Patch ist, lohnt sich ggf. auch ein send-pr mit passendem Diff. Es kommt öfter vor, dass ein Maintainer mal nicht reagiert. Wenn Du dann den Patch ans FreeBSD-Team schickst, dann profitieren wenigstens die anderen Nutzer davon.
 
Ich muss nur noch pkg-plist erstellen und nochmals unter 4.x und noch unter 5.x testen. Dann probier ich mal den Port zu submitten, damit die anderen Nutzer gleich ganz profitieren können ;-)
 
ich versuche etwas ähnliches umzusetzen.

Ich bin gerade dabei freenx in einer jail zu installieren, da der nxserver wohl mit localhost/127.0.0.1 etwas vor hat, gibt es einen patch, den ich gerne in die ports klemmen würde.
Der Patch ist hier zu finden => http://unix.derkeiler.com/Mailing-Lists/FreeBSD/questions/2006-03/msg00182.html

Ich habe nun folgendes ein eine datei im files-ordner geschrieben:
Code:
+++ nxcomp/Loop.cpp Thu Mar 2 08:15:12 2006
@@ -4567,7 +4567,8 @@
char *connectedHost = inet_ntoa(newAddr.sin_addr);
unsigned int connectedPort = ntohs(newAddr.sin_port);

- if (*acceptHost == '\0' || (int) newAddr.sin_addr.s_addr == acceptIPAddr)
+// if (*acceptHost == '\0' || (int) newAddr.sin_addr.s_addr == acceptIPAddr)
+ if (1)
{
#if defined(INFO) || defined (TEST)
*logofs << "Loop: Accepted connection from '" << connectedHost

leider bekomme ich beim installieren immer den folgenden Fehler:
Code:
===>  Patching for nxserver-1.4.0
===>  Applying extra patch /usr/ports/net/nxserver/files/extra-patch-nxcomp-types.h
===>  Applying FreeBSD patches for nxserver-1.4.0
patch: **** malformed patch at line 4: char *connectedHost = inet_ntoa(newAddr.sin_addr);
=> Patch patch-jo failed to apply cleanly.
*** Error code 1

Stop in /usr/ports/net/nxserver.
*** Error code 1

Stop in /usr/ports/net/nxserver.
*** Error code 1

Stop in /usr/ports/net/freenx.
*** Error code 1

Stop in /usr/ports/net/freenx.
** Command failed [exit code 1]: /usr/bin/script -qa /tmp/portinstall7477.0 make reinstall
** Fix the installation problem and try again.
** Listing the failed packages (*:skipped / !:failed)
        ! net/freenx    (install error)
--->  Packages processed: 0 done, 0 ignored, 0 skipped and 1 failed

@@ -4567,7 +4567,8 @@
Die Zeile stimmt: "char *connectedHost = inet_ntoa(newAddr.sin_addr);" ist in der Zeile 4567.
Was wird mit den 2 Werten angegeben ?
Was soll zwischen den beiden Werten Stehen ? Das 1. Zeichen( nur "c") oder alle Zeichen in der Zeile ("char *connectedHost = inet_ntoa(newAddr.sin_addr);") ?
 
hi,

wie sieht es damit aus:
Code:
--- nxcomp/Loop.cpp.orig        Sat Feb  5 21:10:48 2005
+++ nxcomp/Loop.cpp     Fri Mar 24 13:21:45 2006
@@ -4567,7 +4567,8 @@
       char *connectedHost = inet_ntoa(newAddr.sin_addr);
       unsigned int connectedPort = ntohs(newAddr.sin_port);

-      if (*acceptHost == '\0' || (int) newAddr.sin_addr.s_addr == acceptIPAddr)
+      // if (*acceptHost == '\0' || (int) newAddr.sin_addr.s_addr == acceptIPAddr)
+      if (1)
       {
         #if defined(INFO) || defined (TEST)
         *logofs << "Loop: Accepted connection from '" << connectedHost
Und wir wollen uns hier immer brav an das Porters' Handbook halten und diese Datei patch-nxcomp-Loop.cpp nennen und nicht patch-jo oder so etwas. ;)
 
Zuletzt bearbeitet:
vielen dank,
aber natürlich werden wir uns an die Konventionen halten. Wenn man sie versteht, macht sie sogar Sinn :rolleyes:
 
Zuletzt bearbeitet:
Zurück
Oben