Coder Social home page Coder Social logo

ubuntu / ubuntu-make Goto Github PK

View Code? Open in Web Editor NEW
1.2K 76.0 188.0 6.89 MB

Easy setup of common tools for developers on Ubuntu.

License: GNU General Public License v3.0

Python 39.22% Shell 0.63% Dockerfile 0.09% Makefile 0.01% HTML 59.26% Perl 0.79% Standard ML 0.01%

ubuntu-make's Introduction

Ubuntu Make

Ubuntu Make is a project designed to enable quick and easy setup of common needs for developers on Ubuntu.

Get it from the Snap Store

Current project health

Test Status
Style check tests Style tests
Url availability check Url parsing

Translation status

Installing

SNAP

$ snap install ubuntu-make --classic

If installed via the snap it can be run as ubuntu-make.umake, or via the alias umake

Ubuntu Make interacts heavily with the system, in particular with the apt database. Confined or devmode snaps aren’t able to do that.

Transitioning to a classic snap gives us the same power than a debian package on this regard, while still enabling for a smoother transition.

More information on this confined snap is available at https://didrocks.fr/2017/07/05/ubuntu-make-as-a-classic-snap-intro/

PPA

There is also a daily built ppa:

sudo add-apt-repository ppa:lyzardking/ubuntu-make
sudo apt-get update
sudo apt-get install ubuntu-make

If you are running deb-get, then you can simply run:

deb-get install ubuntu-make

Listing

Umake has three listing options:

  • --list to show all the frameworks
  • --list-available to show the available frameworks
  • --list-installed to show the installed frameworks

Running the command line tool

To run the tool:

$ ./umake

You can use --help to get more information and change the verbosity of the output with -v, -vv.

Requirements

Note that this project uses python3 and requires at least python 3.3. All commands use the python 3 version. There are directions later on explaining how to install the corresponding virtualenv.

Shell completion

To enable shell completion on bash or zsh, just run:

$ . enable_completion

Different level of logging

Multiple logging profiles are available in confs/ to be able to have different traces of your execution (particularly useful for debugging). For instance, you will find:

  • debug.logcfg: Similar to using -vv, but also puts logs in a debug.log.
  • debug_network.logcfg: The root logging level is INFO (-v), the network activities are in DEBUG mode and will be logged in debug_network.log.
  • testing.logcfg: Mostly for coverage tests, do not set any logging config on stdout, but:
  • DEBUG logs and above are available in debug.log.
  • INFO logs and above are available in info.log.
  • WARNING and ERROR logs are available in error.log.

Under normal circumstances, we expect error.log to remain empty../

To load one of those logging profiles:

$ LOG_CFG=confs/debug.logcfg bin/umake

Development

Providing user's framework

It's possible for anyone to have local frameworks for either development purposes or for special local or team use-cases.

  • Any files in a directory set with the "UMAKE_FRAMEWORKS" environment variable will be loaded first.
  • Any files inside ~/.umake/frameworks will be loaded next.

Any file should eventually contain a category or frameworks like the ones in umake/frameworks/*.

If category names are duplicated only one will be loaded. Ubuntu Make will first load the one controlled by the environment variable, then the one located in the home based directory, and finally, the system one. Note that duplicate filenames are supported but not encouraged.

Style guide and checking

We are running pep8, but the max line length has been relaxed to 120. env/ is excluded from the pep8 check as well.

Running this test, in particular:

$ ./runtests pep8

This will run those pep8 checks on the code.

You can also run the pycodestyle or pep8 tool directly from the project directory:

$ pycodestyle/pep8 .

Tests

Types of tests

There are four types of tests that can be combined in runtests:

  • pep8: Run the pep8 tests on all the umake and test code.
  • small: Tests modules and components with mock content around them. Note that this uses a local webserver (http and https) to serve mock content.
  • medium: Tests the whole workflow. It directly calls end user tools from the command line, but without affecting the local system. Requirements like installing packages are mocked, as well as the usage of a local webserver serving (smaller) content similar to what will be fetched in a real use case. The assets have the same formats and layout.
  • large: Runs the same tests as the medium test, but with real server downloads and installation of dpkg packages. Most of these tests need root privileges. Be aware that these tests only run on a graphical environment. It will interfere with it and it is likely to install or remove packages on your system.

To run all the tests, with coverage report:

$ ./runtests

Running some tests with all debug info

By default, runtests will not display any debug output if the tests are successful, similar to pytest. However, if only tests are selected, runtests will a display full debug log,

$  ./runtests tests/small/test_tools.py::TestConfigHandler

More information on runtests

runtests is a small pytest wrapper used to simplify the testing process. By default, if no arguments are supplied, runtests will run all available tests on the project using the production nose configuration. It is possible to run only some types of tests:

$ ./runtests small medium

This will only run small and medium tests, with all pytest defaults (no profile is selected).

Finally, you can run a selection of one or more tests:

$ ./runtests tests/small/test_tools.py::TestConfigHandler

You can activate/disable/change any of those default selected configurations with --config/--coverage/--debug/ (see runtests --help for more information)

Check for Python warnings:

runtests is compatible with showing the Python warnings:

$ PYTHONWARNINGS=d ./runtests

Create your own environment and run from it

For an easier development workflow, we encourage the use of virtualenv to test and iterate on the project rather than installing all the requirements on your machine. In the project root directory run (env/ is already in .gitignore and excluded from pep8 checking):

$ virtualenv --python=python3 --system-site-packages env
$ sudo apt-get install -qq python3-apt # use the system version of python apt
$ sudo apt-get install -qq python3-gi # not installable with pypi
$ sudo apt-get install -qq bzr python3-dev # requires for pip install -r
$ env/bin/pip install -r requirements.txt
$ source env/bin/activate
$ bin/umake

Developing using system package

Instead of using a virtual environment, you can install system packages to be able to run the Ubuntu Make tests. The build dependencies are listed in debian/control and should be available in recent Ubuntu versions.

Release management

Refresh .pot files:

$ ./setup.py update_pot

ubuntu-make's People

Contributors

abigailbuccaneer avatar aleks-sidorenko avatar comicshrimp avatar comradekingu avatar didrocks avatar eldarkg avatar fcole90 avatar iceboundrock avatar ivuk avatar jeffrey04 avatar jravetch avatar lyzardking avatar miamibc avatar milotype avatar mivik avatar nathanbnm avatar nicolaskeita avatar ojsheikh avatar ovo288 avatar pellcorp avatar peterdavehello avatar redmcg avatar rezaalmanda avatar srikanthpusthem avatar sschuberth avatar syndbg avatar tinche avatar tschf avatar weblate avatar whitesymmetry avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ubuntu-make's Issues

Support updating tools

Ok, the Twitter website just crashed my Firefox while I was in the middle of writing this up, so this writeup is gonna be shorter. :p

Some tools can update themselves - stuff from PPAs, JetBrains, Eclipse, Android stuff I think. This doesn't concern these tools.

Some tools can't, like go-lang and probably any other language support we add in the future. We should have an upgrade workflow for these tools.

Actually upgrading the tools should be easy due to our policy of always getting the latest upstream - remove&install. What we should improve is the way users know what needs to be updated.

A subset of our tools should support reporting the version of a tool back. So when we install a tool, the version goes into the config file.

Then users can ask umake - list all tools that have updates. We go through all installed tools from the config file, check if their modules support versioning. If they do, fetch latest upstream version, compare with the current version (if current version is missing, because the tool was installed before we added support for versions, flag as 'update available') and list everything that can be updated.

Remove .idea directory from source

We should probably remove the .idea directory from source control.

This directory stores (amongst other things) user settings - for example I'm getting conflicts now while working on other issues. Other developers might not be using PyCharm/Idea, and even if they are importing the project without the directory should be easy.

@didrocks If you agree, I can remove the directory from source control and add it to .gitignore.

Eclipse Luna Support

Let's say I wanted to contribute Eclipse Luna support. My first instinct would be to package it up as a .deb and then just have the udtc install it via apt, but this seems like it's missing the point of udtc. Am I looking at this the wrong way?

In any case, any tips on how exactly to proceed?

udtc is a confusing acronym, consider a rename

So I've been showing udtc to people and after the first few times it feels like udtc is awkward to type, it's not descriptive, and doesn't really roll off the tongue.

Perhaps we should consider renaming it to something like "devcenter", I'm sure bikeshedding will ensue:

devcenter install android

Reads "I'm using devcenter to install android"

Add support for the rest of JetBrains IDEs

Idea Ultimate, PyCharm Commercial Edition, PhpStorm, RubyMine, WebStorm, CLion.

As far as I remember they actually display the license themselves when started for the first time, so no problems there. This should be very easy with the Idea/PyCharm support we already have, assuming the hashes are located in their usual places.

I'll do this myself, one by one, but if anyone else wants to contribute this would be a great opportunity.

Intellij IDEA: Can't parse the download URL from the download page.

Invalid URI for fetching idea community edition via terminal.

Need to know how to find the script that contains either the wget or curl command for Intellij idea.
sudo apt-get purge ubuntu-developer-tools-center
sudo apt-get clean && sudo apt-get autoremove
sudo apt-add-repository ppa:ubuntu-desktop/ubuntu-make
sudo apt-get update && sudo apt-get install ubuntu-make
cd ~
devandroid@christopher-Lenovo:/usr/local/lib/python3.4/dist-packages$ umake ide idea
Choose installation path: /home/devandroid/tools/ide/idea
ERROR: Can't parse the download URL from the download page.

I was unable to find where the python script that was specified by an include statement at the top of the shell script for running the ubuntu-make application by executing its'

umake
/usr/bin/umake

alias which mapped to

cat /usr/bin/umake 

The umake script had the following contents:

  GNU nano 2.2.6                                  File: /usr/bin/umake                                                                          
#!/usr/bin/python3
# EASY-INSTALL-ENTRY-SCRIPT: 'Ubuntu-Make==0.0.1','console_scripts','umake'
__requires__ = 'Ubuntu-Make==0.0.1'
import sys
from pkg_resources import load_entry_point
if __name__ == '__main__':
    sys.exit(
        load_entry_point('Ubuntu-Make==0.0.1', 'console_scripts', 'umake')()
    )

The JetBrains page for downloading the Community Edition idea package looks to be different than before. Previously I don't recall the option to choose my protocol provided via two separate URIs for both ```shell

http://download.jetbrains.com/idea/ideaIC-14.0.2.tar.gz
https://download.jetbrains.com/idea/ideaIC-14.0.2.tar.gz

protocol and/or at the least specifying that there was an option. Previously I had tried in the past to download Jet Brains package using

$ wget http://download.jetbrains.com/idea/ideaIC-14.0.1.tar.gz

and whenever I'd added the two parameters following the command

wget --no-cookies --no-check-certificate https://download.jetbrains.com/idea/ideaIC-14.0.1.tar.gz

I would end up having to remove the s from the protocol due to having inserted it myself. The

wget --no-check-certificate http://download.jetbrains.com/idea/ideaIC-14.0.1.tar.gz

said it was an error because no certificate existed meaning they would
not have offered the user to select

https://download.jetbrains.com/idea/ideaIC-14.0.2.tar.gz

which can be downloaded now as well using the following:

$ wget --no-cookies https://download.jetbrains.com/idea/ideaIC-14.0.2.tar.gz

It's worth noting that there also appears to be a .org version of Jet Brains for community editions of their products for which they offer that as an option. Also on the products listing page they list the community edition under the category of mobile development and it links to the exact same download page as the other hyperlinked IDEA link on the products page. They both still make you choose between a trial download or a free edition download. Free edition points to two more option in the event that you cancel or it fails to popup.

Vagrant support

Uptream vagrant publishes their own packages: https://www.vagrantup.com/downloads.html

We should integrate that into udtc. Ubuntu also published official vagrant cloud images, so we could also prompt the user to snag the boxes they want as part of the setup.

Add Eclipse Android Developer Tool support.

The logical following of adding the Android Studio support is to add the Eclipse Android flavor as well. There was a huge community interests for it when we released udtc.

This is not the android default, we keep android studio beta on purpose, but that will be a nice option for the user.

We'll need a Feature Freeze Exception for utopic to get that in, so keeping it as a separate branch first.

Force install_path to be an absolute path or accept ~ (at least, have a /)

We need to convert it then to an absolute path in the config, launcher and so on, but error out if none of this is provided in the parser.

for instance, let's image a typo:
udtc android eclipse-adt -> this will install android-studio (default android framework) in the "eclipse-adt" relative path. It will bring confusion, the launcher isn't valid as containing eclipse-adt and so on.

Proposal:
if we don't have a / in the install_path argument we error out. If we are in the "default framework case, we propose in stderr other existing framework or tell to set a path as argument.
We need to accept ~ and expand to an absolute path as well.

Switch to Requests

While working on #5 (branched from the eclipse-adt branch), I needed to have DownloadCenter respect redirects (301/302). (There's a TODO line about adding this in the code.)

I propose we switch to the requests library for downloading.

Requests:

  • has a much nicer API than the built-in Python ones
  • is available on Ubuntu as python-requests
  • does SSL cert verification automatically and by default
  • follows redirects by default
  • has a nicer streaming API
  • is a defacto standard for HTTP/S for Python

I've already switched DownloadCenter to use requests, but now I have some failing tests. If @didrocks agrees, how about we open a branch for the transition, work on that branch until all tests pass, and when it's merged I can push Eclipse Luna support on top of that.

Idea: use docker to build containers of different dev stacks

I work on multiple projects at a time. udtc should allow me to generate a number of environments for a django project so I can isolate my different projects. I can also work on a rails app at the same time. Add some Golang projects. Run postgresql, oracle or mysql only when needed, etc etc. All this while keeping the base Ubuntu install very clean.

I'm willing to help with whatever time I can spare. udtc sounds really cool.

Cannot launch Android Studio

Hello,

I managed to install Android Studio using the Make PPA instructions found here: https://wiki.ubuntu.com/ubuntu-make?action=show&redirect=ubuntu-developer-tools-center . But when I try to launch Android Studio using the unity tool the program tries to reinstall Java SE Development Kit and NetBeans IDE. The screen prompt sayings 'NetBeans IDE 8.0.2 and JDK 7 Update 71 are already installed. Click Cancel to exit the installation'. Once I click cancel the screen tries again and produces the same screen. Once I click cancel a second time the program closes and Android Studio never launches.

What am I doing wrong?

Thanks for the guidance.

Kyle01

Create real BaseInstaller tests.

A lot of test for BaseInstaller are in the AndroidStudio framework. This would be repeated between multiple frameworks.

It would be better to have a simple framework (question: how to create it and load it only for those large tests?) that exercise all those code path:

  • with license, deny license
  • install with path, reinstall, reinstall with different paths, removal…
  • check as well the .config file content in those large tests.
  • add some tests with relative path game and default framework with incorrect paths.

Support a full Oracle Java stack from upstream

webup8 maintains a PPA that install's Oracle Java: http://www.webupd8.org/2014/03/oracle-java-8-stable-released-install.html

There are likely some issues we'd need to resolve (accepting a license), etc., but there's a clear demand for people who just want Oracle Java. Here's the manual way people do it: http://askubuntu.com/questions/56104/how-can-i-install-sun-oracles-proprietary-java-jdk-6-7-8-or-jre

This is long and error prone, it would be awesome if udtc could just automate this entirely.

Can't install android on lasted version

Hello guys,

I have a fresh install on Ubuntu 14.04 LTS and I have install the ppa. ( sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make )

When I lunch android installation : morgan@laptop:~$ umake android
I have this error :

[I Accept (a)/I don't accept (N)] a
Downloading and installing requirements |
ERROR: Unhandled exception#################################################### |
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/umake/tools.py", line 154, in wrapper
function(_args, *_kwargs)
File "/usr/lib/python3/dist-packages/umake/frameworks/baseinstaller.py", line 262, in get_progress
self.pbar.update(progress)
File "/usr/lib/python3/dist-packages/progressbar/init.py", line 271, in update
raise ValueError('Value out of range')
ValueError: Value out of range

JetBrains support

This has been on my mind lately, and I think it's low hanging fruit at this point.

JetBrains is the company behind the IntelliJ family of IDEs - Idea, PyCharm, RubyMine, PhpStorm, WebStorm etc. Support for these would be very useful to the community, I think.

I suggest enabling support just for open source variants initially (Idea and PyCharm community editions), then seeing about adding the commercial versions of all the available products.

I can work on this.

Make scriptable by adding command line args or env vars in place of prompts

Related to the idea about making docker containers, it would be easier to achieve this (and may be useful in other scenarios) if there was a way of specifying things like the install path and licence acceptance as command line args (eg. umake android --install-path=/tools/android --accept-licence).

I tried echo -e '\na\n' | umake android in a dockerfile, and it didn't work so well - ended up installed into "/-e ". (Explicitly entering a path rather than accepting the default didn't work either, I didn't get to the bottom of why not.)

Consider removal actions

Some users may want to remove tools installed by udtc eventually. Udtc should either support this directly to the best of its ability or document the procedure clearly. I don't think deleting the directory in ~/tools is enough, since we create .desktop files too, elsewhere.

Also, some tools probably won't have self-updating functionality baked in. Do we want to allow an upgrade option for the tools as well? This could maybe be implemented by just deleting the old version of the tool and installing the new one from scratch (hopefully the tools use other directories for config...).

Introduce BeautifulSoup4 as a dependency

Since the Idea/PyCharm modules will be parsing HTML too, it'd be nifty if we added the python3-bs4 package as a requirement.

BeautifulSoup is an easy-to-use Python HTML parser. For example, parsing the PyCharm download page for the download URL:

>>> soup = BeautifulSoup(html)
>>> soup.find('a', text="direct link").attrs['href']
'http://download.jetbrains.com/python/pycharm-community-3.4.1.tar.gz'

I could do this as part of the Idea/PyCharm work.

ERROR: Protocol not supported. when trying to download Eclipse

Choose installation path: /home/nxx/tools/ide/eclipse
ERROR: https://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/luna/R/eclipse-standard-luna-R-linux-gtk-x86_64.tar.gz.md5&r=1 couldn't finish download: Protocol not supported.
ERROR: Protocol not supported.
CRITICAL: Exception in worker
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/umake/network/download_center.py", line 120, in _fetch
    with closing(requests.get(url, stream=True, headers=headers)) as r:
  File "/usr/lib/python3/dist-packages/requests/api.py", line 55, in get
    return request('get', url, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/api.py", line 44, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 456, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 585, in send
    history = [resp for resp in gen] if allow_redirects else []
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 585, in <listcomp>
    history = [resp for resp in gen] if allow_redirects else []
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 179, in resolve_redirects
    allow_redirects=False,
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 553, in send
    adapter = self.get_adapter(url=request.url)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 608, in get_adapter
    raise InvalidSchema("No connection adapters were found for '%s'" % url)
requests.exceptions.InvalidSchema: No connection adapters were found for 'ftp://ftp.gtlib.gatech.edu/pub/eclipse/technology/epp/downloads/release/luna/R/eclipse-standard-luna-R-linux-gtk-x86_64.tar.gz.md5'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/lib/python3.4/concurrent/futures/thread.py", line 54, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/lib/python3/dist-packages/umake/network/download_center.py", line 134, in _fetch
    raise BaseException("Protocol not supported.") from exc
BaseException: Protocol not supported.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.4/concurrent/futures/thread.py", line 65, in _worker
    work_item.run()
  File "/usr/lib/python3.4/concurrent/futures/thread.py", line 56, in run
    self.future.set_exception(e)
  File "/usr/lib/python3.4/concurrent/futures/_base.py", line 504, in set_exception
    self._invoke_callbacks()
  File "/usr/lib/python3.4/concurrent/futures/_base.py", line 297, in _invoke_callbacks
    callback(self)
  File "/usr/lib/python3/dist-packages/umake/network/download_center.py", line 182, in _one_done
    self._done()
  File "/usr/lib/python3/dist-packages/umake/network/download_center.py", line 190, in _done
    self._done_callback(self._downloaded_content)
  File "/usr/lib/python3/dist-packages/umake/frameworks/ide.py", line 83, in done
    UI.return_main_screen()
  File "/usr/lib/python3/dist-packages/umake/ui/__init__.py", line 35, in return_main_screen
    cls.currentUI._return_main_screen(status_code=status_code)
  File "/usr/lib/python3/dist-packages/umake/ui/cli/__init__.py", line 53, in _return_main_screen
    MainLoop().quit(status_code=status_code)
  File "/usr/lib/python3/dist-packages/umake/tools.py", line 138, in quit
    raise self.ReturnMainLoop()
umake.tools.ReturnMainLoop

Inform user on how to run the installed tool

I did umake android, it installed it. We should tip the user with something, maybe instead of "Installation done" we could do "Installation done, look for Android Studio in the Dash" or perhaps consider prompting to install a .desktop for the user on the launcher automatically.

Firefoxs's unity launcher: Mozilla Firefox and Firefox developer edition 's launcher "got merged"

I have installed Firefox Develeper Edition From umake.
I have then a pinned launched for Firefox for developer.
I have also a pinned launcher for Mozilla Firefox.
I have opened 2 Firefox for developer windows and 1 Mozilla Firefox window (the windows you see in the screenshot).

As you can see on the launcher on this screenshot, there are little white thing on the Firefox for developer on its launcher icon. The expected result should be only 2 little line on Firefox for developer launcher, not 3 on the Firefox for developer.

TL;DR: When opening a Mozilla Firefox windows, it will be stacked in the Firefox for developer in the (unity) launcher.

I don't know if this bugs comes from a wrong .desktop settings from the ubuntu-make package or if it comes from unity (I have seen this bug with non umake like gnome-terminal and byobu)

Screenshot

note

Sailfish and Tizen Support

Both sailfish Os and Tizen recommends developers to install sdk on ubuntu. Adding ubuntu make support will be worth it.

Where is my Android SDK?

Story time. I just did:

udtc android

When it finished the only new thing in my menus is "Android Studio".

I need to install Android SDK level 12 or above. I gather that I do this with a program called SDK Manager. I ran Android Studio and poked around in the menus, and eventually I found this one:

sdkman

Unfortunately SDK Manager is greyed out here, so I am stumped. I am not sure if it is even installed or not. This could be a lot easier. In my opinion, UDTC should install SDK Manager (if it doesn't) and add it to the menus. It would also be nice if I could do this without installing Android Studio, since I don't actually need it.

Note: I have installed the SDK and NDK before, and I recall SDK Manager being a stand-alone GUI tool, maybe that has changed? I've never heard of Android Studio before...

Selenium Support?

Id like to contribute and create support for installing testing frameworks (selenium..etc) would that be something that you guys would want? or is there another testing framework that would be better?

Android Studio download page changed, breaking udtc

I saw Android Studio hit 1.0 and tried this:

Android Studio is already installed on your system, do you want to reinstall it anyway? [Yes (y)/No (N)] y
Choose installation path: /home/jorge/tools/android/android-studio
ERROR: Download page changed its syntax or is not parsable

ModemManager conflicts with many embedded development tools

Many embedded (MSP430, AVR, PIC, ARM, etc) development tools use serial ports for communication or programming. The installed-by-default modem manager package performes active probing on all serial ports thereby often breaking time-sensitive bootup sequences with random AT commands.

I believe that using mobile modems should not be at odds with being an embedded engineering enthusiast or professional. I would like to suggest that we start working on SerialManager which would be in control of all the serial ports and could mediate with ModemManager (but also GPS tools, modem control tools, embedded programmers and other software that needs serial access) to prevent conflicts.

In the long term, I would like the out-of-the-box experience to be good for both casual users that wish to use their 3G modem dongle as well as developers that control a specialized test equipment over a serial line.

The shared component could provide a form of identity management to where traditionally there is none. It could also give advanced users a central point for management (permissions, meta-data, etc). Lastly it would be a layer that other, well-behaved software can talk to (all the programming tools, custom flashers, etc).

As a part of this effort I would like to work on Serial Manager and on patches to Modem Manager. I would like to invite anyone interested to join me to make Ubuntu, and other modern free software desktops, the best development environment anyone can ask for.

Discourage language-specific package installation with sudo

When udtc moves on from Android to other development areas (specifically web development), it would be a good time to make Ubuntu work well out of the box with language-specific package managers. In particular, sudo {pip,npm,gem} install is a bad way to work -- system level belongs to apt. So, two thoughts:

  1. distro-patch (possibly also upstream) pip, gem, npm, etc so that they warn when used as root/with sudo (possibly even require a --yes-really option or similar)
  2. set up user accounts on the system so that, out of the box, pip install XXX or gem install XXX work correctly when run as a user (rather than failing because they can't write to /var/lib/gems or some other root folder)

Add ability to install Android NDK

The Android NDK can't be installed via the normal SDK Manager, being able to install it from a single udtc command would be a big improvement over the current process of downloading and executing .bin files manually

--remove doesn't appear in --help.

Since we added in 418c202 the removal support, this one doesn't appear in udtc --help.
The reason why is because the --remove option is attached to the framework subparser and not to the main or category one.

on --help, we show:
the main help
the category help for each category.

There are multiple choices. Either, we force --remove to be supported in every frameworks for any category and so, attach it to the main parser (and pass the information around all subparsers then) or we repeat the information for any framework support.

The first solution seems saner to me, any thought?

Use plainbox for testing udtc itself

Hi.

I'm the lead developer of plainbox/checkbox - testing tools common to Ubuntu.

Our tools allow to express and run test definitions in a uniform way. Existing 'small/medium/large' tests could be defined as plainbox job definitions. Plainbox has a lot of nice features, including stable core, rich feature set (manual & automatic tests, reporting, handling root) and a nice touch UI (which also works on the desktop).

We're trying to move all ad-hoc testing intiatives to use plainbox and I'd like to explore udtc to use plainbox as well. I'm offering my help to teach everyone about how this can be done and to do a lot of the work myself.

As far as technical bits go, to run tests you'd need to get one more dependency (plainbox) which is available from pypi/debian/ubuntu.

Support installing on path where users don't have write access

We'll turn need root access for those. However, we can't use it in setup(), as the user can interactively give a path as well, we need to check later and turn as sudo.

Maybe we should have a start_install request once the path is given (but we need to consider that fact that some questions like "do you want to overwrite…" were already answer.

The code should be along the line:
if requested_install_path:
parent_requested_install_path = os.path.dirname(requested_install_path)
if not os.access(parent_requested_install_path, os.W_OK):
logger.debug("Curren't user can't write to {}".format(parent_requested_install_path))
self.need_root_access = True

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.