zirias@
Developer
I'll use paths and jail names from my machine. To follow this little guide, you should be familiar with poudriere and know yourself what you have to change to match your environment. You should also be patient, there's a lot to build
1. Create a poudriere i386 jail matching your amd64 version
You'll probably do this with poudriere-jail(8). Using the
2. Make changes to the i386-wine port
This step will probably take a long time for building all the dependencies.
Then, copy the resulting package to your poudriere distfiles:
5. Re-create distinfo
6. Re-create pkg-plist, using poudriere testport
Do this with your normal amd64 jail, mine is named "def":
This will eventually fail for the missing pkg-plist and drop you to a shell inside the build jail. There you can create a new pkg-plist:
While the builder jail is still running, do the following on a second terminal to copy the new pkg-plist to its correct location:
Now, edit pkg-plist and remove the following lines:
7. Build the amd64 package of i386-wine, using your normal amd64 jail
You should now have an i386-wine package in your repository that's up to date with emulators/wine. Mine is now version 5.0.4 and works as expected
1. Create a poudriere i386 jail matching your amd64 version
You'll probably do this with poudriere-jail(8). Using the
http
method, this will be a single command. I'm building base from source, so here's what I did instead:
Code:
cd /usr/src
make -j8 TARGET=i386 buildworld
zfs create zroot/poudriere/jail/i386
make TARGET=i386 DESTDIR=/usr/local/poudriere/jail/i386 installworld
make TARGET=i386 DESTDIR=/usr/local/poudriere/jail/i386 distrib-dirs
make TARGET=i386 DESTDIR=/usr/local/poudriere/jail/i386 distribution
poudriere jail -c -j i386 -v 13.0-RC3 -a i386 -m null -M /usr/local/poudriere/jail/i386 -S /usr/src
2. Make changes to the i386-wine port
- Change
PORTREVISION
in Makefile to match that of emulators/wine- Here, I removed it, as currently there is no revision in wine
- Change
DISTVERSION
in Makefile.amd64 to match that of emulators/wine- Here, I set it to
5.0.4
- Here, I set it to
- For now, delete distinfo and pkg-plist, we will re-create them later
- I recommend to use a file specific for your i386 jail, e.g. /usr/local/etc/poudriere.d/i386-make.conf
- You MUST put
WINE_CROSS_BUILD=yes
there - Optionally also set build options for wine, e.g. I used
emulators_i386-wine_SET+= CUPS LIBXSLT MPG123
Code:
poudriere bulk -j i386 -p default emulators/i386-wine
Then, copy the resulting package to your poudriere distfiles:
Code:
cp /usr/local/poudriere/data/packages/i386-default/All/i386-wine-5.0.4,1.txz /usr/local/poudriere/distfiles/FreeBSD:13:amd64/
5. Re-create distinfo
Code:
# Bourne shell:
# export PORTSDIR=/usr/local/poudriere/ports/default
# export DISTDIR=/usr/local/poudriere/distfiles
# C shell:
setenv PORTSDIR /usr/local/poudriere/ports/default
setenv DISTDIR /usr/local/poudriere/distfiles
cd ${PORTSDIR}/emulators/i386-wine
make makesum
6. Re-create pkg-plist, using poudriere testport
Do this with your normal amd64 jail, mine is named "def":
Code:
poudriere testport -j def -p default -i emulators/i386-wine
Code:
cd /usr/ports/emulators/i386-wine
make makeplist >/wrkdirs/usr/ports/emulators/i386-wine/work/pkg-plist
Code:
cd /usr/local/poudriere/ports/default/emulators/i386-wine
cp /usr/local/poudriere/data/.m/def-default/ref/wrkdirs/usr/ports/emulators/i386-wine/work/pkg-plist .
- The first one that's just a warning
- Every line with
%%PORTDOCS%%
in it - The one line with
ldconfig32
in it
Ctrl+D
).7. Build the amd64 package of i386-wine, using your normal amd64 jail
Code:
poudriere bulk -j def -p default emulators/i386-wine
You should now have an i386-wine package in your repository that's up to date with emulators/wine. Mine is now version 5.0.4 and works as expected