Ticket #21138 (closed defect: fixed)
strigi fails to build 64-bit
| Reported by: | andrea@… | Owned by: | clubjuggler@… |
|---|---|---|---|
| Priority: | Normal | Milestone: | |
| Component: | ports | Version: | |
| Keywords: | LP64 | Cc: | ruud@…, macsforever2000@…, julienzoubian@…, nicos_pavlov@…, bgrupe@…, domiman@…, macports@…, snc@…, charmedguy18@… |
| Port: | strigi |
Description (last modified by toby@…) (diff)
Looks like a 64-bit issue to me.
Attachments
Change History
Changed 4 years ago by andrea@…
- Attachment strigi_build.txt added
comment:1 Changed 4 years ago by macsforever2000@…
- Owner changed from macports-tickets@… to clubjuggler@…
comment:2 Changed 4 years ago by toby@…
- Keywords LP64 added; snowleopard removed
- Version 1.8.99 deleted
- Description modified (diff)
- Summary changed from strigi fails to build on OS 10.6 to strigi fails to build 64-bit
comment:7 follow-up: ↓ 8 Changed 4 years ago by mkr@…
The problem is in strigi itself. I tried to compile it by hand and found that some variables have wrong types.
You have to make two changes, to compile it successfully:
src/daemon/dbus/dbuscpp/dbusmessagereader.cpp: Line 66
change: DBusMessageReader::operator>>(int64_t& s) {
into: DBusMessageReader::operator>>(dbus_int64_t& s) {
build/src/daemon/dbus/dbusclientinterface.cpp: Line 148
change: uint64_t mtime;
into: dbus_uint64_t mtime;
The second file is generated during compilation.
So the workaround is:
Do "sudo port install strigi", wait until it breaks and change the first file:
cd /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_devel_strigi/work/strigi-0.6.3/
edit src/daemon/dbus/dbuscpp/dbusmessagereader.cpp
Then "sudo port install strigi" again, wait until it breaks again and change the second file:
edit src/daemon/dbus/dbusclientinterface.cpp
(in MacPorts it's built in the src directory, so no "build/" in front of the path)
Then "sudo port install strigi" again, and it should compile successfully.
I'll see if I can communicate this directly to the strigi people...
comment:8 in reply to: ↑ 7 Changed 4 years ago by ruud@…
Replying to mkr@…:
The problem is in strigi itself. I tried to compile it by hand and found that some variables have wrong types.
You have to make two changes, to compile it successfully:
Fixes it for me, thanks.
comment:11 Changed 4 years ago by macsforever2000@…
I'm not quite able to make the 2nd patch work in the Portfile. I'm going to attach my attempt so far.
Changed 4 years ago by macsforever2000@…
- Attachment patch-dbusclientinterface.cpp.diff added
This is the 2nd patch based on a generated file that I cannot get to work with the portfile.
Changed 4 years ago by macsforever2000@…
- Attachment patch-dbusmessagereader.cpp.diff added
This is the 1st patch and it works fine.
Changed 4 years ago by macsforever2000@…
- Attachment patch-MacroCheckGccVisibility.cmake.diff added
Re-made the existing portfile patch to use p0.
comment:12 Changed 4 years ago by payam.minoofar@…
As of today, I can't get strigi to build with any of the above prescriptions. I have attached the output that port reported as strigi.txt
comment:13 Changed 4 years ago by florian.feldhaus@…
Same for me. The two fixes solved the first problems, but Strigi didn't finnish building. I figured out, that it was building i386 and x86_64 binaries, even I didn't have the universal option set. The following worked for me: sudo port clean strigi sudo port install strigi -universal
You will run into the problems mentioned above. If the patches don't work, apply the changes by hand!
comment:17 Changed 4 years ago by macports@…
Workaround worked for me (using the mentioned patches and -universal option)
comment:18 Changed 4 years ago by zuxez@…
Hi. I came up with this patch to fix the issue for Gentoo/Prefix. The problem is that strigi seems to have some internal data type problems, which in conjunction with the auto-generation of the files just heads for serious trouble. Anyway, you can't make the types use dbus_-tyles because the interface src/daemon/clientinterface.h is used for makecode.pl which contains no dbus-stuff at all and defines "virtual void indexFile(const std::string& path, uint64_t mtime, const std::vector<char>& content)" which imho is the "uint64_t mtime" that fails in the generated src/daemon/dbus/dbusclientinterface.cpp. So the nearest workaround is to switch from the dbus_-types in dbusmessagereader.cpp to the standard defines. This patch allows for fully automatic building (at least with Gentoo/Prefix). Maybe it's to some help for you :-)
Kind regards,
Heiko
Changed 4 years ago by jeremy.laine@…
- Attachment fix-dbus-types.patch added
Update Portfile to fix build on x86_64
comment:23 Changed 4 years ago by snc@…
- Status changed from new to closed
- Resolution set to fixed
Committed in r58800.


port -dv install strigi