blinksh / blink

Blink Mobile Shell for iOS (Mosh based)
https://blink.sh
GNU General Public License v3.0
6.18k stars 577 forks source link

Blink 0.722 b 21 xcode project won't build from scratch #72

Closed RalphSutherland closed 8 years ago

RalphSutherland commented 8 years ago

After getting and making all the prereqs, there are some issues that prevent a build, and some that are inconsistent with the BUILD doc, but are fixable.

0) libssh2 doesn't make a .framework, only .a and .h so xcode proj slot of libssh2.framework can't be filled. The openssl framework builds fine.

1) for build-mosh: ' and paste the src/frontend/MoshiOSController.h to the header folder.'.. can't be done as build-mosh stands, no such file anywhere in build-mosh/mosh/* let alone build-mosh/mosh/src/frontend/

Blink won't build without, MoshSession.m can't proceed.

2) missing resources:

sauce.css webfont.js

don't exist anywhere. But are not referred to anywhere either so I deleted the references.

3) Some .a libraries in the xcode project refer to .a files in the root area not Frameworks/lib or similar as described in the BUILD. but these can be moved.

carloscabanero commented 8 years ago

Thanks for trying this, it is extremely important to make the build repeatable. I'm spinning up a build system and will try to fix a few myself too. For 0, I created a script that basically packages libssh into a framework, will double check that it is there because it should. Same for 1. Sauce.css etc are just for external fonts, so it should work without that. Will double check the libraries location too, before they were in a different location but before the release/cleanup I decided to move them and maybe Xcode still has some old stuff.

Anyway, I'm now focusing on release so I cannot give this a ton of priority.

RalphSutherland commented 8 years ago

Understood. When working on a project over time and it evolves, it is difficult to keep the build from scratch setup consistent, and as you say it is not the highest priority if other key areas still need settling. Soo glad that mosh is getting some attention for iOS, I often work remotely and moving from net to net, monitoring simulations and managing my office workstations, so I use mosh a lot on my laptop. I'll be testing on a 128GB 6S+ iPhone, and I have iPads from 2,3,4 and minis as well as iPhone 4S and 5S to test on, I have made iOS game apps (crossword games) and a calculator called eVx ( http://www.sutherland-studios.com.au/apps/evaluator-evx/ ), so I know general Obj C more than I know ssl and crypto code.

carloscabanero commented 8 years ago

0) I made a mistake and used x2on URL, instead of my own: https://github.com/carloscabanero/libssh2-for-iOS - this one is the real thing and creates a very simple .framework.

RalphSutherland commented 8 years ago

O/ Still can't build :( No sign of MoshiOSController.h anywhere in any of the project or sub project files. I did make the framework above OK. So one step forward.

screen shot 2016-08-21 at 7 54 33 pm
RalphSutherland commented 8 years ago

Is there an incorrect gitignore file somewhere that is masking the file by accident? I am still keen to contribute, but have limited options at this point.

carloscabanero commented 8 years ago

Hi Ralph, yup, I screwed up with that one but im preparing a frameworks folder as a separate repository, with all libs, etc already compiled. For the time being, that file is the terminalbridge.h from the mosh/src/frontend repo. Just rename it :)

I already helped a few compile it through hangouts or Skype, so let me know if you would like to have a quick call to get it done. Also Yury is preparing a fabric script that should help.

On Sun, Aug 21, 2016 at 6:02 AM Dr Ralph Sutherland < notifications@github.com> wrote:

Is there an incorrect gitignore file somewhere that is masking the file by accident? I am still keen to contribute, but have limited options at this point.

— You are receiving this because you commented.

Reply to this email directly, view it on GitHub https://github.com/blinksh/blink/issues/72#issuecomment-241248817, or mute the thread https://github.com/notifications/unsubscribe-auth/AAgwmSda-IeuAFhjj_hQtdrbya8S0pjEks5qiCI3gaJpZM4JGp7q .

dariaphoebe commented 8 years ago

That file, after copying, still needs #include to even think about compiling, and still is no dice.

RalphSutherland commented 8 years ago

Thanks Daria! Carlos, I will persist now I have the missing link. In any case I'll await the more unified build options eagerly. LMK when the unified frameworks repo is ready and I'll try breaking that :)

RalphSutherland commented 8 years ago

dariaphoebe's fix is the last missing step I needed, I can now build and run in the simulator and on my 6Splus, thanks. I will start my server running mosh tomorrow and play with ssh keys. I needed to add a #include to the renamed file, and now it builds.

carloscabanero commented 8 years ago

Awesome! Glad to know that you got it working. I will try to package Mosh in a .framework to make things easier. Any other ideas to automate the process? The Frameworks and Resources repositories are also coming, although ugly as hell should make things easier.

@dariaphoebe anything else blocking you?

dariaphoebe commented 8 years ago

well, compiling your Libssh2 yields one sans Implicit declaration of function 'libssh2_userauth_publickey_frommemory' is invalid in C99

which is upstream. So. The instructions are not quite right.

Actually, this is fine, once i update. the remaining issue is with ncurses and mosh, and i am looking.

dariaphoebe commented 8 years ago

the ncurses issue can be solved with missing headers, and you apparently also rely on the system protoc compiler being the same version as the one blink is using, which is not needed. seeing what i can do

dariaphoebe commented 8 years ago

once that's done, the issues are missing sauce.css, missing webfont.js... fine...

but then no hterm_all.js, which i think is the downfall.

carloscabanero commented 8 years ago

This is an easy one. You can plug any terminal you want and the BUILD refers to HTerm. I just compiled it following Google instructions, and this is the resulting file:

https://gist.github.com/carloscabanero/c8db5ac3efaf39df63ea8418b17c84ef

RalphSutherland commented 8 years ago

The build doc needs a careful work through at some point to make it consistent with the current build. The hterm_all.js is a case; the BUILD doc mentions terminal.js, and the chromium hterm build link , but not that the project is set to look for hterm_all.js (in term.html )and that you need to make it with the hterm link explicitly. ie

To use hterm, get the libapps hterm from Chromium's HTerm, and generate hterm_all.js with the bin/mkdist.sh script (their build instructions are less than clear!). If you use another terminal.js, edit term.html to match.

Tomorrow I'll try a fresh from scratch build with the new version and make edits to the BUILD doc as I go this time, and you can see if you think it is improved.

dariaphoebe commented 8 years ago

i'll get a patch for the build-mosh together which makes that less obtuse

dariaphoebe commented 8 years ago

https://github.com/blinksh/build-mosh/pull/3

carloscabanero commented 8 years ago

You both are completely right, it isn't clear at all. I will try to rewrite that part and also maybe a "resources" repo with all those statics. I do not like the idea of providing the compiled libraries because it hinders the option to actually tinker with Mosh or update libopenssl or libssh2 to future versions.

Thanks a lot for the patches and putting the time to compile it. I obviously couldn't see these issues, and you also found better solutions, like faking the ncurses piece. :)

carloscabanero commented 8 years ago

Working to finish this. The method I will use is to create a single mosh.framework with all the libs and headers from a single script. Then a separate repository for the resources. Hopefully it could all be just a single step, but I will also provide with downloads for the pre compiled mosh.framework, as ncurses requires a local UNIX environment.

Let me know if you have any other ideas and thanks to everyone for your help! :)

carloscabanero commented 8 years ago

Latest master already has changes to build-mosh that makes it a single step, and to simplify Blink compilation now we also provide precompiled frameworks. I think this basically closes this issue. There might be more stuff to automate, like making it a single step, but I think it isn't needed at the moment.

Thanks a lot to you both @RalphSutherland & @dariaphoebe for your patches and notes when trying to compile.