Linux ports tutorial? WPS Office

Pedro Giffuni pfg at FreeBSD.org
Thu Dec 14 23:37:24 UTC 2017



On 12/14/17 18:11, Chris H wrote:
> On Thu, 14 Dec 2017 17:59:34 -0500 "Pedro Giffuni" <pfg at FreeBSD.org> said
>
>> On 12/14/17 17:07, Chris H wrote:
>> > On Thu, 14 Dec 2017 09:15:35 -0500 "Pedro Giffuni" 
>> <pfg at FreeBSD.org> said
>> >> On 12/13/17 22:31, blubee blubeeme wrote:
>> >>> On Thu, Dec 14, 2017 at 11:17 AM, Pedro Giffuni <pfg at freebsd.org 
>> >>> <mailto:pfg at freebsd.org>> wrote:
>> >>>
>> >>> Hello;
>> >>> On 13/12/2017 21:11, Chris H wrote:
>> >>> On Wed, 13 Dec 2017 19:56:24 -0500 "Pedro Giffuni"
>> >>> <pfg at FreeBSD.org> said
>> >>>
>> >>> On 12/10/17 14:55, Eugene Grosbein wrote:
>> >>>> 11.12.2017 2:22, Pedro Giffuni пишет:
>> >>>>> Hello guys;
>> >>>>>
>> >>>>> I would like to attempt a port for WPS Office (AKA
>> >>> Kingsoft Office):
>> >>>>>
>> >>>>> http://wps-community.org/
>> >>>>>
>> >>>>> Are there guidelines for linux ports? I couldn't find
>> >>> much details in the
>> >>>> handbook.
>> >>>>>
>> >>>>> In particular, how do you handle when the pkg-plist is
>> >>> different for i386
>> >>>> and amd64?
>> >>>>>
>> >>>>> Some ports use pkg-plist.${ARCH}  but I don't know how
>> >>> those work.
>> >>>> Just have "USES=linux", "USE_LINUX_RPM=yes" and make
>> >>> these two files
>> >>>> pkg-plist.i386 and pkg-plist.amd64
>> >>>> and they are used automatically. Or you could duplicate
>> >>> a magic from
>> >>>> /ports/Mk/Uses/linux.mk <http://linux.mk> in your Makefile:
>> >>>>
>> >>>> PLIST?= ${PKGDIR}/pkg-plist.${LINUX_ARCH:S/x86_64/amd64/}
>> >>>>
>> >>>> For details, read Porter's Handbook:
>> >>>>
>> >>> https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/
>> >>> <https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/>
>> >>>>
>> >>>
>> >>> The handbook has no information about "USE_LINUX_RPM=yes".
>> >>> If I set that it appears the ports framework will ignore
>> >>> MASTER_SITES.
>> >>>
>> >>> Should I dig into the MK framework to see how to change
>> >>> the repository or should I use the .tar.xz distribution
>> >>> instead? :(.
>> >>>
>> >>> I'm not sure. But would having a look at the way
>> >>> emulators/linux_base-c(6|7)
>> >>> provide some clues?
>> >>>
>> >>>
>> >>> Not really but I think I found something in Mk/Uses/linux.mk
>> >>> <http://linux.mk>:
>> >>>
>> >>> For the case of USE_LINUX_RPM it is supposed to not do anything
>> >>> when MASTER_SITES is defined but it is somewhat messy, and somehow
>> >>> it always uses ${MASTER_SITE_CENTOS_LINUX}. Any port that uses RPM
>> >>> but not the Centos repositories?
>> >>>
>> >>>     Just a thought, and hope it helps!
>> >>>
>> >>> Thanks, I just have to keep digging :(.
>> >>>
>> >>> Pedro.
>> >>>
>> >>> The linux packaging is okay but I'd recommend learning how the 
>> >>> porting process and not just wrapping up a linux binary in FreeBSD.
>> >>>
>> >>
>> >> Well ... of course if I had the source code I would not be dealing 
>> >> RPMs for the linuxulator.
>> >>
>> >> Software can be free but not include source code.  It can still be 
>> >> desirable for FreeBSD.
>> >>
>> >>> The main reason for that is you can port your way into a corner 
>> that >>> relies on very Linux specific stuff that there's just no 
>> solution >>> for yet nor will there be one unless you port the entire 
>> Linux >>> kernel to FreeBSD.
>> >>>
>> >>
>> >> Which is why we have a linuxulator.
>> > OK Pedro, just so I know I understand your intentions correctly;
>> > You need a way to unpack all the .rpm's, and separate them by
>> > $arch -- 32bit -vs- 64bit, so that you can create the correct > 
>> pkg-plist(s)
>> > for each of them. Is that correct?
>> >
>> > I'll await your response before a solution for that.
>> >
>>
>> I did that already, thanks.
>> The trick was defining DISTFILES_amd64, DISTFILES_i386 and 
>> SRC_DISTFILES.
>>
>> Now the problem is that our RPM support doesn't expect to find files 
>> installed in usr/bin and share.
>>
>> At some point I decided it was better to use the .tar.xz distribution 
>> but that uses version of glibc and libpng that don't match either of 
>> the centos distributions we carry. So I am back to RPMs.
> Can't you just *omit* those, and use those already supplied by FreeBSD?
> Maybe those in the linux_base ports, via (run|make)depends?
>

Yes, I did that.

The port still doesn't work:
- It appears it wants to use a old version of libpng that is not in our 
centos7.
- USE_RPM doesn't install anything, it seems like we are missing support 
for non-base RPMs.

I think I'll bail on this port, it requires some packaging-foo that I 
don't want to spend time on.

I'll leave my WIP here, for someone else to play with it:

https://people.freebsd.org/~pfg/ports/linux-wps-office.tgz

Cheers,

Pedro.



More information about the freebsd-ports mailing list