Closed FourthDr closed 9 years ago
It's in the readme. Note that I'm uploading a windows installer as well.
Well I must be missing something, because the readme I see on the main page does not tell how to compile. You mean the readme.md? That does not contain any instructions. If there is another readme file? Which one, where?
Huh... it's not in the readme. Could have sworn it used to be; my apologies.
I'll update it soon, in the meantime, for linux, it's a standard autotools sequence:
./autogen.sh ; ./configure ; make ; (sudo) make install ;
for windows using mingw (from Linux), use:
make -f Makefile.mingw PIDGIN_TREE_TOP=/path/to/where/you/have/pidgin/sources/ installer
Hi Mikeage:
I tried compiling the Linux version of the plugin on two different systems with the same problem. Once on Xubuntu 14.04 lts and once on Debian.
First there are quite a few dependencies that need to be met that are not normally installed. I had to install at minimum the following: intltool, libglib2.0-dev plus a boat load of others. After that, I am now getting an error: No package 'pidgin' found. And it goes on to talk about environment variables might need changing. This despite having the latest pidgin 2.10.9 installed. How do I fix this problem?
I started with the Linux build figuring that it would be the easiest to do. Since it was build on Linux and I have not used mingw before. But apparently this is not the case. Any help/tips would be appreciated.
Try installing the pidgin-dev package. On Oct 11, 2014 11:52 PM, "FourthDr" notifications@github.com wrote:
Hi Mikeage:
I tried compiling the Linux version of the plugin on two different systems with the same problem. Once on Xubuntu 14.04 lts and once on Debian.
First there are quite a few dependencies that need to be met that are not normally installed. I had to install at minimum the following: intltool, libglib2.0-dev plus a boat load of others. After that, I am now getting an error: No package 'pidgin' found. And it goes on to talk about environment variables might need changing. This despite having the latest pidgin 2.10.9 installed. How do I fix this problem?
I started with the Linux build figuring that it would be the easiest to do. Since it was build on Linux and I have not used mingw before. But apparently this is not the case. Any help/tips would be appreciated.
— Reply to this email directly or view it on GitHub https://github.com/mikeage/prpltwtr/issues/13#issuecomment-58764142.
Now I am getting an libxlm-2.0 not found error. I tried apt-get install libxml-2.0 and it was not found. Did an apt-cache search and tons of libxml's came up. Which version of libxml do I need?
IIRC, it's libxml2-dev.
Hi Mikeage: It's me again! :-D Ok, I think you need to update that build readme file again. It would be easier if you included a list of needed programs and per-requisites needed before one starts the build process. Because this it starting to get old. Now the error is: no JSON-glib-dev. Only apt-get does not find a "JSON-glib-dev" to install. :-(
UPDATE: I found it, it should be asking for libJSON-glib-dev! Why does autogen.sh complain about something being missing, and then not provide the full actual name of the item to be installed, and then quit? Sounds like something Mircosoft explorer would do in the middle of copying 50,000 files, quits on one file copy error without telling which file it didn't like! :-|
Seems to me autogen.sh should just go through the entire list, and then at the end provide the full names of ALL the missing components at once. This would save a lot of time and frustration. But I realize you did not write that software.
This is why no one was awarded the BTC! What I was looking for over a year ago was a binary release for windows to be available via the original google code website. Instead, half a dozen people tired to fork it with little or no documentation about how to build and no pre-built binaries for either Linux or Windows. And my emails went unanswered that I sent regarding various claims for the BTC. So I withdrew the offer, and gave up. I wonder if a Kickstarter would have yielded better results?
I'm hoping there are not too many more missing items to go.....fingers crossed. Stay tuned.
If you can send me a full list of the dependencies, I'll be glad to add it. Package names don't always match the header names, but I can have it output a more specific message if needed.
Thanks On Oct 12, 2014 9:45 AM, "FourthDr" notifications@github.com wrote:
Hi Mikeage: It's me again! :-D Ok, I think you need to update that build readme file again. It would be easier if you included a list of needed programs and per-requisites needed before one starts the build process. Because this it starting to get old. Now the error is: no JSON-glib-dev. Only apt-get does not find a "JSON-glib-dev" to install. :-(
UPDATE: I found it, it should be asking for libJSON-glib-dev! Why does autogen.sh complain about something being missing, and then not provide the full actual name of the item to be installed, and then quit? Sounds like something Mircosoft explorer would do in the middle of copying 50,000 files, quits on one file copy error without telling which file it didn't like! :-|
Seems to me autogen.sh should just go through the entire list, and then at the end provide the full names of ALL the missing components at once. This would save a lot of time and frustration. But I realize you did not write that software.
This is why no one was awarded the BTC! What I was looking for over a year ago was a binary release for windows to be available via the original google code website. Instead, half a dozen people tired to fork it with little or no documentation about how to build and no pre-built binaries for either Linux or Windows. And my emails went unanswered that I sent regarding various claims for the BTC. So I withdrew the offer, and gave up. I wonder if a Kickstarter would have yielded better results?
I'm hoping there are not too many more missing items to go.....fingers crossed. Stay tuned.
— Reply to this email directly or view it on GitHub https://github.com/mikeage/prpltwtr/issues/13#issuecomment-58775451.
Hi Mike:
As far as I can tell, here are the pieces needed to compile a Linux version of the plugin. The indented items are auto installed when you select the main dependance. Intltool (indent)autoconf (indent)automake
libtool
glib (libglib2.0-dev + doc)
pidgin-dev (indent)+66 others
libxml-2.0 (libxml2-dev)
json-glib (libjson-glib-dev)
This works on Xubuntu and the Raspberry Pi with Raspbian Debian Wheezy.
One last minor thing. The script right after running autogen.sh says: next step make, make install. It does not say to run ./configure.
There was no indent in the comment. The first few are standard development packages; I'll add a link to https://developer.pidgin.im/wiki/Installing%20Pidgin#Compiling for the pidgin specific ones, and a note about json-glib (which is unique to prpltwtr).
Good find on the "next step"
Ya. For some reason the preview shows indents. But when I post the comment, the indents are removed. Quark of github? Hows that? I updated it for lack of a better way I used ( ).
So far I am unable to make a windows build. When I try using your command line: make -f Makefile.mingw PIDGIN_TREE_TOP=/path/to/where/you/have/pidgin/sources/ installer
I receiving the following output error message:
root@Pi:/home/pi/sources/prpltwtr-twitter-json# make -f Makefile.mingw PIDGIN_TREE_TOP=/home/pi/sources/pidgin-2.10.9 make -C src -f Makefile.mingw all make[1]: Entering directory '/home/pi/sources/prpltwtr-twitter-json/src' make -C win32_only/json-glib -f Makefile.mingw all make[2]: Entering directory '/home/pi/sources/prpltwtr-twitter-json/src/win32_only/json-glib' gcc.exe -O2 -Wall -Waggregate-return -Wcast-align -Wdeclaration-after-statement -Werror-implicit-function-declaration -Wextra -Wno-sign-compare -Wno-unused-parameter -Winit-self -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wundef -Wstack-protector -fwrapv -fno-strict-overflow -Wno-missing-field-initializers -Wformat-security -fstack-protector-all --param ssp-buffer-size=1 -pipe -mms-bitfields -g -DHAVE_CYRUS_SASL -DHAVE_CONFIG_H -DWIN32_LEAN_AND_MEAN -DJSON_COMPILATION=1 -DG_DISABLE_DEPRECATED -DG_LOG_DOMAIN=\"Json\" -I. -I/home/pi/sources/pidgin-2.10.9/../win32-dev/gtk_2_0-2.14/include -I/home/pi/sources/pidgin-2.10.9/../win32-dev/gtk_2_0-2.14/include/gtk-2.0 -I/home/pi/sources/pidgin-2.10.9/../win32-dev/gtk_2_0-2.14/include/glib-2.0 -I/home/pi/sources/pidgin-2.10.9/../win32-dev/gtk_2_0-2.14/include/pango-1.0 -I/home/pi/sources/pidgin-2.10.9/../win32-dev/gtk_2_0-2.14/include/atk-1.0 -I/home/pi/sources/pidgin-2.10.9/../win32-dev/gtk_2_0-2.14/include/cairo -I/home/pi/sources/pidgin-2.10.9/../win32-dev/gtk_2_0-2.14/lib/glib-2.0/include -I/home/pi/sources/pidgin-2.10.9/../win32-dev/gtk_2_0-2.14/lib/gtk-2.0/include -o json-array.o -c json-array.c make[2]: gcc.exe: Command not found /home/pi/sources/pidgin-2.10.9/libpurple/win32/rules.mak:4: recipe for target 'json-array.o' failed make[2]: * [json-array.o] Error 127 make[2]: Leaving directory '/home/pi/sources/prpltwtr-twitter-json/src/win32_only/json-glib' Makefile.mingw:12: recipe for target 'all' failed make[1]: * [all] Error 2 make[1]: Leaving directory '/home/pi/sources/prpltwtr-twitter-json/src' Makefile.mingw:15: recipe for target 'all' failed make: *\ [all] Error 2
So what am I doing wrong here? As you can see I am trying to build on my Raspberry Pi. I can compile the Linux version just fine. No problem on Xubuntu either building for Linux. Windows version just doesn't want to build.
It's calling gcc.exe; do you have such a program installed? I don't know anything about installing mingw on a raspberry pi...
Yes I do have gcc installed. I could not have compiled the Linux version without it. I also tried to install gcc and apt-get said "you already have the latest version..". Should be the same as on a desktop, all the raspberry pi is using is Debian. Should have all the same packages etc.. So I don't know why it does not work or says it can't find gcc.
You need the mingw cross compiler, not the regular linux->linux gcc.
On Sat, Oct 18, 2014 at 9:04 PM, FourthDr notifications@github.com wrote:
Yes I do have gcc installed. I could not have compiled the Linux version without it. I also tried to install gcc and apt-get said "you already have the latest version..". Should be the same as on a desktop, all the raspberry pi is using is Debian. Should have all the same packages etc.. So I don't know why it does not work or says it can't find gcc.
— Reply to this email directly or view it on GitHub https://github.com/mikeage/prpltwtr/issues/13#issuecomment-59623798.
How do I get that installed? Or do I need to do it on a Windows box?
Yes, you'll need to install it. For Ubuntu, install mingw32, mingw32-binutils, and mingw32-runtime. No idea how to do so on a raspberry pi.
I don't know if you can compile on windows; in theory, it could probably be done, but I'm never done it.
That's what I needed! I was trying to install "mingw" and apt-get said not found. It's going on now. Rpi is basically the same as a desktop Debian install. Most all the same packages are available for the Rpi as for the desktop version. Crossing fingers again :-D
Well, I seem to be getting the same error even after installing all the mingw32 stuff. And I also tried it on Xubuntu 14.04, same error as on the Pi. See below...
root@pi:/home/pi/sources/prpltwtr-twitter-json# make -f Makefile.mingw PIDGIN_TREE_TOP=/home/pi/sources/pidgin-2.10.9 make -C src -f Makefile.mingw all make[1]: Entering directory '/home/pi/sources/prpltwtr-twitter-json/src' make -C win32_only/json-glib -f Makefile.mingw all make[2]: Entering directory '/home/pi/sources/prpltwtr-twitter-json/src/win32_only/json-glib' gcc.exe -O2 -Wall -Waggregate-return -Wcast-align -Wdeclaration-after-statement -Werror-implicit-function-declaration -Wextra -Wno-sign-compare -Wno-unused-parameter -Winit-self -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wundef -Wstack-protector -fwrapv -fno-strict-overflow -Wno-missing-field-initializers -Wformat-security -fstack-protector-all --param ssp-buffer-size=1 -pipe -mms-bitfields -g -DHAVE_CYRUS_SASL -DHAVE_CONFIG_H -DWIN32_LEAN_AND_MEAN -DJSON_COMPILATION=1 -DG_DISABLE_DEPRECATED -DG_LOG_DOMAIN=\"Json\" -I. -I/home/pi/sources/pidgin-2.10.9/../win32-dev/gtk_2_0-2.14/include -I/home/pi/sources/pidgin-2.10.9/../win32-dev/gtk_2_0-2.14/include/gtk-2.0 -I/home/pi/sources/pidgin-2.10.9/../win32-dev/gtk_2_0-2.14/include/glib-2.0 -I/home/pi/sources/pidgin-2.10.9/../win32-dev/gtk_2_0-2.14/include/pango-1.0 -I/home/pi/sources/pidgin-2.10.9/../win32-dev/gtk_2_0-2.14/include/atk-1.0 -I/home/pi/sources/pidgin-2.10.9/../win32-dev/gtk_2_0-2.14/include/cairo -I/home/pi/sources/pidgin-2.10.9/../win32-dev/gtk_2_0-2.14/lib/glib-2.0/include -I/home/pi/sources/pidgin-2.10.9/../win32-dev/gtk_2_0-2.14/lib/gtk-2.0/include -o json-array.o -c json-array.c make[2]: gcc.exe: Command not found /home/pi/sources/pidgin-2.10.9/libpurple/win32/rules.mak:4: recipe for target 'json-array.o' failed make[2]: * [json-array.o] Error 127 make[2]: Leaving directory '/home/pi/sources/prpltwtr-twitter-json/src/win32_only/json-glib' Makefile.mingw:12: recipe for target 'all' failed make[1]: * [all] Error 2 make[1]: Leaving directory '/home/pi/sources/prpltwtr-twitter-json/src' Makefile.mingw:15: recipe for target 'all' failed make: *\ [all] Error 2
Any other suggestions?
I'd forgotten everything I'd done, but I noticed you're still calling gcc.exe (not just 'gcc'). On mine, it calls the correct compiler. Checking my sources and a quick Google search led me to https://developer.pidgin.im/wiki/BuildingWinPidgin#CrossCompiling . Try following the instructions there; specifically, I see that I have a local.mak which specifies the correct compiler.
I tried to mimic the build process of other pidgin plugins, which also meant basing myself on the existing pidgin/libpurple conventions. Once we finish, perhaps you can document exactly what was missing and submit a pull request?
So you have a local.mak file? What's in it?
When was the last time you successfully compiled for win32?
30 seconds ago.
Here's my file: SHELL := /bin/bash CC := /usr/bin/i586-mingw32msvc-cc GMSGFMT := msgfmt MAKENSIS := /usr/bin/makensis MAKENSISOPT := - WINDRES := /usr/bin/i586-mingw32msvc-windres STRIP := /usr/bin/i586-mingw32msvc-strip INTLTOOL_MERGE := /usr/bin/intltool-merge
INCLUDE_PATHS := -I$(PIDGIN_TREE_TOP)/../win32-dev/w32api/include LIB_PATHS := -L$(PIDGIN_TREE_TOP)/../win32-dev/w32api/lib
And where in your directory structure do you have this file located??? For example: I have \home\pi\source\ with \prpltwtr-twitter-json and \pidgin-2.10.9 under sources.
From the link https://developer.pidgin.im/wiki/BuildingWinPidgin#CrossCompiling :
"This done is by overriding the various Makefile variables in a local.mak file in the $PIDGIN_DEV_ROOT/pidgin-
Well, the gcc.exe error went away, but now I have a whole lot of other error messages....I'll post in a bit.
Please make sure you have ALL of the packages installed, as per the official pidgin link. I don't know which ones it requires, but I can't recall any other changes I had to make
FYI: I just set up a travis CI job to compile all versions. You can look at the .travis.yml (note the leading . ) to see what I had to install and set up; this may help you as well.
".travis.yml", what's that? Looks like some kind of make like file of some sort?
This discussion spurred me on to try and compile this plugin for windows and thought I'd chip in. It's been brutal but I have made it to the linking stage. I now have "multiple definition" problems.
I couldn't figure out how to compile the 'official' mingw and used MXE instead. I am guessing that my problem is that I have mxe's gcc 4.9.1 and pidgin is compiled with 4.7.2. I'm not optimistic but I'll keep chipping away at it.
this page was pretty helpful: https://developer.pidgin.im/wiki/BuildingWinPidgin
I've reached this stage: http://pidgin.10357.n7.nabble.com/Cross-compiling-Pidgin-2-10-7-multiple-definition-of-stack-chk-fail-td126854.html
Hi Seanster:
Try just using the mingw package. It is available for most distributions. Which Linux version are you using? I would not think there is any need to compile mingw when there is a package available. Just adds to the complexity of the build and introduces errors not related to the plugin.
So far no luck compiling for Windows.
Sorry to hear that. As I mentioned, I implemented a windows build on Travis a few days ago; the following steps take one of their basic build machines and install everything required (it's all in the .travis.yml file); I see no reason why copy/pasting it shouldn't work for you as well.
sudo apt-get install intltool sudo apt-get install -qq libglib2.0-dev libpurple-dev libjson-glib-dev sudo apt-get install -qq mingw32 mingw32-binutils mingw32-runtime nsis && export PIDGIN_VERSION=2.8.0
export BUILD_DIR=$(pwd)/build export SOURCE_DIR=$BUILD_DIR/src export WIN32DEV_DIR=$BUILD_DIR/win32-dev export PIDGIN_DIR=$BUILD_DIR/pidgin-$PIDGIN_VERSION
mkdir -p $SOURCE_DIR $WIN32DEV_DIR $PIDGIN_DIR
OLD_DIR=$(pwd) cd ${SOURCE_DIR} wget -nv http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.14/gtk+-bundle_2.14.7-20090119_win32.zip http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-tools-0.17.zip http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime-0.17-1.zip http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/libxml2-dev_2.7.4-1_win32.zip http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/libxml2_2.7.4-1_win32.zip http://developer.pidgin.im/static/win32/tcl-8.4.5.tar.gz http://developer.pidgin.im/static/win32/gtkspell-2.0.16.tar.bz2 http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/enchant_1.5.0-2_win32.zip http://developer.pidgin.im/static/win32/nss-3.12.5-nspr-4.8.2.tar.gz http://developer.pidgin.im/static/win32/silc-toolkit-1.1.8.tar.gz http://developer.pidgin.im/static/win32/meanwhile-1.0.2_daa2-win32.zip http://developer.pidgin.im/static/win32/cyrus-sasl-2.1.22-daa1.zip http://ftp.acc.umu.se/pub/GNOME/binaries/win32/intltool/0.40/intltool_0.40.4-1_win32.zip http://prdownloads.sourceforge.net/pidgin/pidgin-${PIDGIN_VERSION}.tar.bz2
unzip ${SOURCE_DIR}/gtk+-bundle_2.14.7-20090119_win32.zip -d ${WIN32DEV_DIR}/gtk_2_0-2.14 unzip ${SOURCE_DIR}/gettext-tools-0.17.zip -d ${WIN32DEV_DIR}/gettext-0.17 unzip ${SOURCE_DIR}/gettext-runtime-0.17-1.zip -d ${WIN32DEV_DIR}/gettext-0.17 unzip ${SOURCE_DIR}/libxml2-dev_2.7.4-1_win32.zip -d ${WIN32DEV_DIR}/libxml2-2.7.4 unzip ${SOURCE_DIR}/libxml2_2.7.4-1_win32.zip -d ${WIN32DEV_DIR}/libxml2-2.7.4 unzip ${SOURCE_DIR}/enchant_1.5.0-2_win32.zip -d ${WIN32DEV_DIR}/enchant_1.5.0-2_win32 unzip ${SOURCE_DIR}/meanwhile-1.0.2_daa2-win32.zip -d ${WIN32DEV_DIR} unzip ${SOURCE_DIR}/cyrus-sasl-2.1.22-daa1.zip -d ${WIN32DEV_DIR} unzip ${SOURCE_DIR}/intltool_0.40.4-1_win32.zip -d ${WIN32DEV_DIR}/intltool_0.40.4-1_win32
cd ${WIN32DEV_DIR} tar xzvf ${SOURCE_DIR}/tcl-8.4.5.tar.gz tar xjvf ${SOURCE_DIR}/gtkspell-2.0.16.tar.bz2 tar xzvf ${SOURCE_DIR}/nss-3.12.5-nspr-4.8.2.tar.gz tar xzvf ${SOURCE_DIR}/silc-toolkit-1.1.8.tar.gz
cd ${BUILD_DIR} tar xjvf ${SOURCE_DIR}/pidgin-${PIDGIN_VERSION}.tar.bz2
echo "SHELL := /bin/bash " >> pidgin-${PIDGIN_VERSION}/local.mak echo "CC := /usr/bin/i586-mingw32msvc-cc " >> pidgin-${PIDGIN_VERSION}/local.mak echo "GMSGFMT := msgfmt " >> pidgin-${PIDGIN_VERSION}/local.mak echo "MAKENSIS := /usr/bin/makensis " >> pidgin-${PIDGIN_VERSION}/local.mak echo "MAKENSISOPT := - " >> pidgin-${PIDGIN_VERSION}/local.mak echo "WINDRES := /usr/bin/i586-mingw32msvc-windres " >> pidgin-${PIDGIN_VERSION}/local.mak echo "STRIP := /usr/bin/i586-mingw32msvc-strip " >> pidgin-${PIDGIN_VERSION}/local.mak echo "INTLTOOL_MERGE := /usr/bin/intltool-merge " >> pidgin-${PIDGIN_VERSION}/local.mak echo "INCLUDE_PATHS := -I$(PIDGIN_TREE_TOP)/../win32-dev/w32api/include " >> pidgin-${PIDGIN_VERSION}/local.mak echo "LIB_PATHS := -L$(PIDGIN_TREE_TOP)/../win32-dev/w32api/lib " >> pidgin-${PIDGIN_VERSION}/local.mak
cd $OLD_DIR PACKAGE_VERSION="$(git describe --tags)" make -f Makefile.mingw PIDGIN_TREE_TOP=$PIDGIN_DIR installer
Hi:
I finally had some time to try your suggestion. I found a few things that need updating and or don't work.
First: export PIDGIN_VERSION=2.8.0 (old version of pidgin) Changed to: export PIDGIN_VERSION=2.10.11
Second:
Invalid link:
http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.14/gtk+-bundle_2.14.7-20090119_win32.zip Had to manually download from ftp.
Third: These two lines are really one line not two: echo "INCLUDE_PATHS := -I$(PIDGIN_TREE_TOP)/../win32-dev/w32api/include " >> pidgin-${PIDGIN_VERSION}/local.mak As well as the next two lines. I also get an error with these because it is referencing a path variable that was not declared earlier "(PIDGIN_TREE_TOP)", PIDGIN_TREE_TOP: command not found.
So here I am stuck.
The last two or is it one lines?, don't work. I get this error:
user@ubuntu14:~$ PACKAGE_VERSION="$(git describe --tags)" make -f Makefile.mingw fatal: Not a git repository (or any of the parent directories): .git make: Makefile.mingw: No such file or directory make: *\ No rule to make target `Makefile.mingw'. Stop. user@ubuntu14:~$
Used this as all one line: PACKAGE_VERSION="$(git describe --tags)" make -f Makefile.mingw PIDGIN_TREE_TOP=$PIDGIN_DIR installer
So tell me what is wrong with this commnad? somethig missing? Why is there a git describe --tags in there?
Doesn't seem like Travis is telling the truth about successfully compiling.
The make command (and the git command) are supposed to be run in the same directory as the prpltwtr repository clone. The git describe is used to set the version automatically.
I realized why the $() in the echo commands is working; it's not being interpreted by bash in the travis compilation, but being echoed as-is. Perhaps they're running this under a different shell; I'm not sure exactly.
You can see the logs there; the compilation is most assuredly succeeding!
Well, that doesn't really help me. What I need is a step by step that is known working. I have spent entirely too much time on a non-working process. You would think Travis could prove it self by providing a finished binary as proof as well a "Here is how I did it". I should not have to dig through a mile long log that may or may not provide any incite into how to actually successfully compile the application. :-(
Sorry, I don't think I can help you any further.
I don't see any directions on how to compile your updated plugin. Since you have no pre-compiled binaries it would be nice to include directions with your code for those that don't know how to compile the code.