Code Monkey home page Code Monkey logo

mbed-cli's People

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

mbed-cli's Issues

Install and update dependencies on first run or each command

In a clean environment there are many dependencies needed for tools. If neo is the entry to tools it should ensure all deps are installed as per the requirements for the version of tools. Initially this is just something like pip install -U -r requirements.txt but forward looking should install in a venv at the program level or system level depending on how tools are distributed.

[docs] Chapter "Creating a new program" minor inconsistencies

Section https://github.com/ARMmbed/neo#creating-a-new-program has some minor issues with command line and add option description, see part with commands:

Below is not really a command I think.

$ "neo.py new git" or "neo.py new hg" 

From chapter

With this in mind, these are the steps for creating a new program (we'll call it myprog):

$ mkdir myprog
$ cd myprog
$ "neo.py new git" or "neo.py new hg"   # this creates new project in the current folder based on the source control management you specified, and also imports the latest revision of mbed-os dependency to your project tree
<add your source files>

add above works a lot like clone, except it adds an explicit dependency to the program that already exists on your local machine. You can get a list of all the dependencies of your program by running neo.py ls.

Update - only code file - error should contain information about a source control presence

# the folder is empty, only one main.cpp and mbed-os.lib

git_repo\github\mbed-rtos-thread-helloworld-test
python neo.py update
[neo.py] Working path "C:\Code\git_repo\github\mbed-rtos-thread-helloworld-test" (directory)
[neo.py] Synchronizing dependency references...
[neo.py ERROR] Cannot find the program or library in the current path "C:\Code\git_repo\github\mbed-rtos-thread-helloworld-test".
[neo.py ERROR] Please change your working directory to a different location or use command "new" to create a new program.

---

neo update --clean uses git reset --hard

neo update --clean not only removes local changes (which might be considered reasonable) but also issues a git reset --hard to blow away the users committed history. Thats not acceptable.

When doing a fresh import, neo.py doesn't obey the library versions in lib files

Neo version 26c8157

I did a neo.py import https://github.com/ARMmbed/example-uvisor-mbed-ipc.git to obtain my project tree to a new, fresh location. In that repository, there is a file named mbed-os.lib with the contents of https://github.com/meriac/mbed-os/#9e9c119. Contrary to my expectations, after the import, neo.py ls showed mbed-os (1fab13e). I expect it to be mbed-os (9e9c119), which is exactly what my project specified it wanted. However, it looks like it was updated behind my back to a newer version of mbed-os. Neo should not go behind my back.

Workaround: Create a new repo with the exact version I want as the master branch. Update my mbed-os.lib to point to this new branch. Annoyingly, this workaround must be also applied to each dependency, so it isn't really a practical workaround.

.build folder is hidden

Please unhide the .build folder, then I can actually find the binary to drag'n'drop onto the CMSIS-DAP again.
In general, .folder are usually hidden in all non-Windows systems.

Or, even better: Provide a neo.py program function (or something like that), that does the finding of the binary and the copying for me.

Neo should not "hg update" when a repository URL changes

I got an error from neo.py update with latest meriac/mbed-os.

[neo.py] Pulling from remote repository
[neo.py] Exec hg pull
pulling from http://mbed.org/users/mbed_official/code/mbed-rtos
real URL is https://developer.mbed.org/users/mbed_official/code/mbed-rtos/
searching for changes
no changes found
[neo.py] Exec hg update -r 0d833691fc17
abort: unknown revision '0d833691fc17'!

mbed-os/core/mbed-rtos.lib has the contents: https://developer.mbed.org/teams/Morpheus/code/mbed-rtos-update/#0d833691fc17

However, the last time I ran neo.py update, the contents were http://mbed.org/users/mbed_official/code/mbed-rtos/#bdd541595fc5.

What neo.py appears to be doing is an hg update to the new revision "0d833691fc17", but with the old URL "http://mbed.org/users/mbed_official/code/mbed-rtos". This doesn't work. Neo should not do this.

Workaround: Delete the mbed-os folder in your application before running neo.py update. This is slow.

Neo sync deletes .lib files without asking

@screamerbg neo.py sync deletes libs/directories from git.

Milosch:mbed-os meri$ neo.py sync

---
[neo.py] Syncing library references...

---
[neo.py] Removing /Users/meri/mbed/mbed-os/hal.lib
[neo.py] Exec git rm -f /Users/meri/mbed/mbed-os/hal.lib
rm 'hal.lib'

---
[neo.py] Removing /Users/meri/mbed/mbed-os/net.lib
[neo.py] Exec git rm -f /Users/meri/mbed/mbed-os/net.lib
rm 'net.lib'

---
[neo.py] Removing /Users/meri/mbed/mbed-os/tools.lib
[neo.py] Exec git rm -f /Users/meri/mbed/mbed-os/tools.lib
rm 'tools.lib'

---
[neo.py] Removing /Users/meri/mbed/mbed-os/core/mbed-rtos.lib
[neo.py] Exec git rm -f /Users/meri/mbed/mbed-os/core/mbed-rtos.lib
rm 'core/mbed-rtos.lib'

---
[neo.py] Removing /Users/meri/mbed/mbed-os/core/mbedtls.lib
[neo.py] Exec git rm -f /Users/meri/mbed/mbed-os/core/mbedtls.lib
rm 'core/mbedtls.lib'
Milosch:mbed-os meri$ 

Export - destination path is wrong, zip file is not provided neither

# testing default export command
neo.py export
[neo.py] Exec python mbed-os/tools/project.py --source=C:\2

Successful exports:
  * LPC1768::uvision    C:\build\export\2_uvision_LPC1768.zip

The path is wrong, we can see I am using C:/2 path, there's no C:\build\export\2_uvision_LPC1768.zip, neither any zip file, but directly project files.

Export - --ide set as uvision only

neo head set to 36f8a26

neo.py export --ide gcc_arm -m K64F
[neo.py] Working path "C:\5" (program)
[neo.py] "python mbed-os/tools/project.py -D TARGET_LIKE_MBED -D TARGET_LIKE_CORTEX_M4 -m K64F --source=C:\5"
C:\5

Successful exports:
  * K64F::uvision       C:\build\export\5_uvision_K64F.zip

it used to work for gcc_arm. Am I missing something? seems like even verbose is not active (I recall -v was showing me commands which are running), but that's for another issue.

Linking modules from workspace

Morpheus is distributed. In following use case

module A needs module B

How do I point to module B in my local sandbox inside module A. So that module A is build with local module B instead of fetching module B from link in module-B.lib.
Much yotta link functionality.

SCM and neo

Why is neo strongly tied to source control management?

Having to specify hg or git up front (or any SCM) when creating a new project is mixing concerns and forces source control decisions onto users.

With the current coupling how would a user:

  • not use git or hg, perhaps they use an offsite backup server instead
  • put multiple projects into a single SCM

Neo shouldn't require that I have a configured upstream for a local branch.

When I make a new branch and haven't pushed yet, and then add a new .lib dependency file that I'd like pulled in, I run neo.py update to pull in the new dependency, but Neo barfs.

Neo should just skip updating the current branch (when there is no upstream for it) and update the other stuff. I don't want to have to set a remote for the current branch yet.

Workaround: git branch --set-upstream mybranch origin/mybranch before running neo.py update


---
[neo.py] Pulling from remote repository
[neo.py] Exec git fetch origin
[neo.py] Exec git merge
fatal: No remote for the current branch.
Traceback (most recent call last):
  File "/home/user/code/neo/neo.py", line 724, in <module>
    status = args.command(args)
  File "/home/user/code/neo/neo.py", line 113, in thunk
    return command(*ordered_args)
  File "/home/user/code/neo/neo.py", line 580, in update
    repo.scm.pull(ref)
  File "/home/user/code/neo/neo.py", line 328, in pull
    popen([git_cmd, 'merge'] + ([hash] if hash else []))
  File "/home/user/code/neo/neo.py", line 130, in popen
    raise ProcessException(proc.returncode)
__main__.ProcessException: 128

Too many pylint issues

Description

So many errors reported when linted with pylint. Console dump below. Please have a look.

$ pylint neo.py -E

E:203, 4: Method should have "self" as first argument (no-self-argument)
E:206, 4: Method should have "self" as first argument (no-self-argument)
E:210, 4: Method should have "self" as first argument (no-self-argument)
E:214, 4: Method should have "self" as first argument (no-self-argument)
E:221, 4: Method should have "self" as first argument (no-self-argument)
E:232, 4: Method has no argument (no-method-argument)
E:235, 4: Method should have "self" as first argument (no-self-argument)
E:236,80: Instance of 'Hg' has no 'url' member (no-member)
E:239, 4: Method should have "self" as first argument (no-self-argument)
E:240,69: Instance of 'Hg' has no 'url' member (no-member)
E:243, 4: Method should have "self" as first argument (no-self-argument)
E:244,69: Instance of 'Hg' has no 'url' member (no-member)
E:249, 4: Method has no argument (no-method-argument)
E:252, 4: Method has no argument (no-method-argument)
E:255, 4: Method has no argument (no-method-argument)
E:259, 4: Method has no argument (no-method-argument)
E:268, 4: Method has no argument (no-method-argument)
E:271, 4: Method should have "self" as first argument (no-self-argument)
E:275,31: Instance of 'Hg' has no 'path' member (no-member)
E:289, 4: Method should have "self" as first argument (no-self-argument)
E:290,31: Instance of 'Hg' has no 'path' member (no-member)
E:293, 4: Method should have "self" as first argument (no-self-argument)
E:295,31: Instance of 'Hg' has no 'path' member (no-member)
E:301,31: Instance of 'Hg' has no 'path' member (no-member)
E:305, 4: Method should have "self" as first argument (no-self-argument)
E:307,31: Instance of 'Hg' has no 'path' member (no-member)
E:313,31: Instance of 'Hg' has no 'path' member (no-member)
E:324, 4: Method should have "self" as first argument (no-self-argument)
E:325,31: Instance of 'Hg' has no 'path' member (no-member)
E:335, 8: Instance of 'str' has no 'remove' member (no-member)
E:347, 4: Method should have "self" as first argument (no-self-argument)
E:350, 4: Method should have "self" as first argument (no-self-argument)
E:354, 4: Method should have "self" as first argument (no-self-argument)
E:361, 4: Method should have "self" as first argument (no-self-argument)
E:368, 4: Method should have "self" as first argument (no-self-argument)
E:379, 4: Method has no argument (no-method-argument)
E:382, 4: Method should have "self" as first argument (no-self-argument)
E:383,80: Instance of 'Git' has no 'url' member (no-member)
E:386, 4: Method should have "self" as first argument (no-self-argument)
E:387,69: Instance of 'Git' has no 'url' member (no-member)
E:390, 4: Method should have "self" as first argument (no-self-argument)
E:395,74: Instance of 'Git' has no 'url' member (no-member)
E:400,128: Instance of 'Git' has no 'url' member (no-member)
E:403, 4: Method has no argument (no-method-argument)
E:406, 4: Method has no argument (no-method-argument)
E:409, 4: Method has no argument (no-method-argument)
E:412, 4: Method has no argument (no-method-argument)
E:420, 4: Method has no argument (no-method-argument)
E:424, 4: Method should have "self" as first argument (no-self-argument)
E:435, 4: Method should have "self" as first argument (no-self-argument)
E:438, 4: Method should have "self" as first argument (no-self-argument)
E:439,31: Instance of 'Git' has no 'path' member (no-member)
E:442, 4: Method should have "self" as first argument (no-self-argument)
E:443,31: Instance of 'Git' has no 'path' member (no-member)
E:454, 4: Method should have "self" as first argument (no-self-argument)
E:455,31: Instance of 'Git' has no 'path' member (no-member)
E:465, 8: Instance of 'str' has no 'remove' member (no-member)

Export vs compile arguments (consistency)

This comes from the mbed SDK world, where we do this nasty inconsistency, which we could fix here (compile and export should provide subset of arguments which are the same, as toolchain or target).

I got at least one example:

# -t vs -i
neo compile -t GCC_ARM
neo export -i gcc_arm

Plus, try to do export -i GCC_ARM (I know this fails for project.py in our workspace tools) :-))

neo doesn't keep the original source control URL

I have a local lib3 repository with a dependency on a lib4. Initially, lib4.lib looks like this:

[email protected]:bogdanmarinescu/lib4.git/#c00bd5e039ba164e645672e63c8c41a78fffb7c2

If I run neo update inside lib3, lib4.lib is automatically modified to this:

https://bitbucket.org/bogdanmarinescu/lib4/#c00bd5e039ba164e645672e63c8c41a78fffb7c2

The SHA1 is exactly the same, but the original (ssh based) URL was replaced with a HTTPS URL.

Reverting to an older version not possible

When we stumbled over the ARMmbed/mbed-os#19 - we ended up on a situation where it's non-trivial to revert the whole tree of a library to the version indicated at the top.

The main problem was that a patch did break the mbed-os build. The problem was introduced by a lib inside mbed-os.lib. Reverting the top level application resulted as expected to revert the top level libs to the version before the bug was introduced.
There was no way though to propagate that revert downwards, so the subsequent repositories would revert to the version mentioned in the .lib files above.

The expected functionality is this:

  • neo.py propagate command to propagate the .lib link indicated revisions on the top downwards to all nested repos. In case a repo has uncommited changes, the tool will bail out at the repository in question.
  • neo.py propagate --hard will propagate the .lib indicated revisions on the top downwards to all nested repos, uncommited changes will be wiped.

@bogdanm @mjs-arm @screamerbg @AlessandroA @Patater @niklas-arm

Export - destination dir should no be root of the project?

This causes an issues, if project is exported to 2 various toolchains.

How to reproduce

# dir
/project
# export
neo export -t target -i IDE
# the exported project is in the root , for instance ./Makefile is here
# make will create build directory
make

# export to another toolchain
neo export -t target -i IDE2
# build now the project for different IDE
# this build can fail

A proposal can be that export dir is not root, could be a directory. And for each IDE, there should be separate directory, so they don't build into one folder.

The exported dir could look like:

exported/Makefile/
exported/uvision/
exported/iar/

Neo always tries to use the remote named "origin"

git remote -v
github-patater  [email protected]:Patater/uvisor-mbed-helloworld.git (fetch)
github-patater  [email protected]:Patater/uvisor-mbed-helloworld.git (push)

Sometimes I don't have any remote named "origin". Neo should not assume I have a remote named "origin".

$ neo.py update

---
[neo.py] Pulling from remote repository
[neo.py] "git fetch origin"
fatal: 'origin' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

---
[neo.py ERROR] Process failed! Error code 128

---

Update on manually fetched repository - removes lib file and does nothing

I fetched manually a program (not used neo import) to get the following:

C:\5                                                                                                                                      
λ ls                                                                                                                                      
MACROS.txt  main.cpp  mbed-os.lib  security.h                                                                                             

Run update to get:

C:\5                                                                                                                                      
λ python neo.py update                                                                                        
[neo.py] Working path "C:\5" (program)                                                                                                    
[neo.py] Synchronizing dependency references...                                                                                           
[neo.py] Remove reference "mbed-os" -> "https://github.com/ARMmbed/mbed-os.git/#5828ebd"                                                  
[neo.py] Removing C:\5\mbed-os.lib                                                                                                        
[neo.py] "hg rm -f C:\5\mbed-os.lib"                                                                                                      
[neo.py] Pulling remote repository "https://[email protected]/teams/Morpheus/code/mbed-Client-Morpheus-from-source/" to local "5"  
[neo.py] "hg pull"                                                                                                                        
pulling from https://[email protected]/teams/Morpheus/code/mbed-Client-Morpheus-from-source/                                       
searching for changes                                                                                                                     
no changes found                                                                                                                          
[neo.py] Updating "5" to latest revision in the current branch                                                                            
[neo.py] "hg update"                                                                                                                      
0 files updated, 0 files merged, 0 files removed, 0 files unresolved                                                                      

Results in removing mbed-os.lib, and nothing else:

C:\5                                                                                                                                      
λ ls                                                                                                                                      
MACROS.txt  main.cpp  security.h                                                                                                          

Update - pull to use ssh for private repositories

Cloning a repo currently means using https, which might be convenient for most of the users and for public repositories.
Is there planned way to get it to use ssh? At least for a private repository it could use ssh. This was similar to yotta (taken from docs):

    "dependencies": {
        "usefulmodule": "git+ssh://[email protected]:path/to/repo"
    }

Command naming

Can we give some thought to the neo commands to be more inline with similar tools, the current command set uses some odd words.

  • new -> init
  • compile -> build

neo update... does neo sync instead

Attempting to use 'neo update' results in the .lib file being updated to reflect what is on disk rather than what is on disk being updated to reflect what is in the .lib, ie neo update can give the behaviour of neo sync. Either I've completely misunderstood the documented behaviour of neo update, or the implementation is broken.

Issue appears to be related to this change:

commit fb5cefd
Author: Mihail Stoyanov [email protected]
Date: Sat Apr 9 19:25:06 2016 +0100

Introduce can_update() routine that checks for local repositories, uncommitted changes or unpublished revisions. Currently used as safe mechanism for update() where a sub-reposi
Also sync before updating so the update process scans all .lib files

Which explicitly introduces a sync operation as a part of an update.

Readme - create a new repo - fails

Neo requires a valid repo (git init or hg init prior working with it). This is not described in the Readme, thus the example provided in Readme fails:

To reproduce:

mkdir test
cd .test
echo "https://developer.mbed.org/teams/Morpheus/code/mbed-os/#71a471196d89" > mbed-os.lib
python neo.py deploy

---
[neo.py ERROR] Current folder is not a supported repository

---

Commands - incorrect arguments lead to the traceback

To reproduce

python neo.py compile --hepl
[neo.py] Exec python mbed-os/tools/make.py --source=C:\2 --build=C:\2\.build --hepl
Usage: make.py [options]

make.py: error: no such option: --hepl
Traceback (most recent call last):
  File "C:\Code\git_repo\github\neo\neo.py", line 724, in <module>
    status = args.command(args)
  File "C:\Code\git_repo\github\neo\neo.py", line 113, in thunk
    return command(*ordered_args)
  File "C:\Code\git_repo\github\neo\neo.py", line 668, in compile
    env=env)
  File "C:\Code\git_repo\github\neo\neo.py", line 130, in popen
    raise ProcessException(proc.returncode)
__main__.ProcessException: 2

I got this when I was trying to use export

python neo.py export -m K64F -i gcc_arm              
[neo.py] Exec python mbed-os/tools/project.py --source=C:\2 -m K64F -i gcc_arm     
Traceback (most recent call last):                                                 
  File "mbed-os/tools/project.py", line 148, in <module>                           
    lib_symbols = [] + options.macros                                              
TypeError: can only concatenate list (not "NoneType") to list                      
Traceback (most recent call last):                                                 
  File "C:\Code\git_repo\github\neo\neo.py", line 724, in <module>                 
    status = args.command(args)                                                    
  File "C:\Code\git_repo\github\neo\neo.py", line 113, in thunk                    
    return command(*ordered_args)                                                  
  File "C:\Code\git_repo\github\neo\neo.py", line 690, in export                   
    env=env)                                                                       
  File "C:\Code\git_repo\github\neo\neo.py", line 130, in popen                    
    raise ProcessException(proc.returncode)                                        
__main__.ProcessException: 1                                                       

Handle absence of command line tools

In absence of command line tools a python stacktrace is displayed - it might make sense to wrap the process execution in a handler that detects the absence of a command line tool and prints a user friendly message like "Could not detect the hg command line tool - please install mercurial or ensure hg is in your search path".

milmer01@localhost:~/mbed/uvisor-mbed-helloworld$ ../neo/neo.py deploy
[neo.py] Cloning /home/milmer01/mbed/uvisor-mbed-helloworld/mbed-os from https://github.com/meriac/mbed-os
[neo.py] "git clone https://github.com/meriac/mbed-os /home/milmer01/mbed/uvisor-mbed-helloworld/mbed-os"
fatal: destination path '/home/milmer01/mbed/uvisor-mbed-helloworld/mbed-os' already exists and is not an empty directory.
[neo.py] Cloning /home/milmer01/mbed/uvisor-mbed-helloworld/mbed-os from https://github.com/meriac/mbed-os
[neo.py] "hg clone https://github.com/meriac/mbed-os /home/milmer01/mbed/uvisor-mbed-helloworld/mbed-os -u 14afdac"
Traceback (most recent call last):
  File "../neo/neo.py", line 933, in <module>
    status = args.command(args)
  File "../neo/neo.py", line 120, in thunk
    return command(**argv)
  File "../neo/neo.py", line 623, in deploy
    import_(lib.fullurl, lib.path)
  File "../neo/neo.py", line 602, in import_
    scm.clone(repo.url, repo.path, repo.hash)
  File "../neo/neo.py", line 219, in clone
    popen([hg_cmd, 'clone', url, name] + (['-u', hash] if hash else []))
  File "../neo/neo.py", line 134, in popen
    proc = subprocess.Popen(command, **kwargs)
  File "/usr/lib64/python2.7/subprocess.py", line 710, in __init__
    errread, errwrite)
  File "/usr/lib64/python2.7/subprocess.py", line 1335, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

Inappropriate script installation.

The decision on script name was 'mbed-cli', but the setup.py script continues to install aliases 'neo' and 'mbed', both of these should be removed.

neo can't build mbed-os on its own

For compile sub command neo requires a module to have mbed-os inside it.
It fails to build mbed-os on its own as it does not have itself in it.

C:\Users\azikha01\Documents\GitHub\morpheus>python neo.py import https://github.com/ARMmbed/mbed-os
C:\Users\azikha01\Documents\GitHub\morpheus>cd mbed-os

C:\Users\azikha01\Documents\GitHub\morpheus\mbed-os>python ..\neo.py compile -m K64F -t GCC_ARM
[neo.py] Working path "C:\Users\azikha01\Documents\GitHub\morpheus\mbed-os" (program)
[neo.py ERROR] The mbed-os codebase and tools were not found in this program.

---

C:\Users\azikha01\Documents\GitHub\morpheus\mbed-os>

compile - files with CreateProcess error (windows) - path max length limitation

It seems like I am hitting windows path limit. This was a problem with yotta, which I recall added unicode paths support, to overcome this?

cd C:\Code\git_repo\github\mbed-rtos-thread-helloworld
python C:\Code\git_repo\github\neo\neo.py compile -m K64F -t GCC_ARM
[neo.py] Exec python mbed-os/tools/make.py --source=C:\Code\git_repo\github\mbed-rtos-thread-helloworld --build=C:\Code\git_repo\github\mbed-rtos-thread-helloworld\.build -m K64F -t GCC_ARM
Building project MBED-RTOS-THREAD-HELLOWORLD (K64F, GCC_ARM)
[ERROR] [Error 87] The parameter is incorrect

vs

cd C:\2
python C:\Code\git_repo\github\neo\neo.py compile -m K64F -t GCC_ARM
[neo.py] Exec python mbed-os/tools/make.py --source=C:\2 --build=C:\2\.build -m K64F -t GCC_ARM
Building project 2 (K64F, GCC_ARM)
Compile: Mutex.cpp
Compile: RtosTimer.cpp
Compile: Semaphore.cpp
Compile: Thread.cpp

new mercurial project fails

Running the command:

> neo new hg

Errors with the following:

[neo] Working path "/home/ubuntu/workspace/New Folder" (program)
[neo] Initializing repository
[neo] "hg init /home/ubuntu/workspace/New Folder"
[neo] Synchronizing dependency references...
Traceback (most recent call last):
  File "/usr/local/bin/neo", line 1152, in <module>
    status = args.command(args)
  File "/usr/local/bin/neo", line 722, in thunk
    return command(**argv)
  File "/usr/local/bin/neo", line 751, in new
    sync()
  File "/usr/local/bin/neo", line 966, in sync
    repo = Repo.fromrepo()
  File "/usr/local/bin/neo", line 512, in fromrepo
    repo.sync()
  File "/usr/local/bin/neo", line 600, in sync
    self.url = self.geturl()
  File "/usr/local/bin/neo", line 631, in geturl
    return self.scm.geturl(self).strip().replace('\\', '/')
  File "/usr/local/bin/neo", line 275, in geturl
    with open(os.path.join(repo.path, '.hg/hgrc')) as f: 
IOError: [Errno 2] No such file or directory: '/home/ubuntu/workspace/.hg/hgrc'

Default target handling for neo

@screamerbg Please add a TARGET_DEFAULT rule:

  • in case another rule matches at that specific directory level, TARGET_DEFAULT gets ignored
  • if no other rule matches at that directory level, TARGET_DEFAULT gets executed
    • in case TARGET_DEFAULT is the only rule in that directory, it will get always included in the build

We need that behaviour in neo to add uVisor-fallback functions to all unsupported targets.

@AlessandroA

Compile - forces build-all to be used if files are changed after the first build?

To reproduce:

//create main.cpp, the compile compiles all files, and produces binary
python C:\Code\git_repo\github\neo\neo.py compile -m K64F -t GCC_ARM


// edit main.cpp, and run compile again
python C:\Code\git_repo\github\neo\neo.py compile -m K64F -t GCC_ARM

[neo.py] Exec python mbed-os/tools/make.py --source=C:\4 --build=C:\4\.build -m K64F -t GCC_ARM
Building project 4 (K64F, GCC_ARM)
Image: C:\4\.build\4.bin`

// executable or binary are the same as prior editing sources

It seems a user needs to build all to force neo to recompile everything

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.