{"push_id":1145797636,"size":69,"distinct_size":5,"ref":"refs/heads/gcc-arm-cleanup","head":"edd1932fe813f59e3772d2468ef4589885e1f112","before":"ef71995c2a4b0c43d5d261eaf139b1756802209b","commits":[{"sha":"bc063a390320336f2da447f9e7d885cb9021469b","author":{"name":"Bogdan Marinescu","email":"c425566f7466ddabfc2ed16361b3008bfda1dae9@arm.com"},"message":"Moved target definitions to JSON format\n\n(long commit message ahead. Sorry about that, it can't be helped.)\n\nThis commit changs targets definition from Python to JSON format, as\npart of the configuration mechanism implementation. There is a new file\nunder workspace_tools/ called \"targets.json\" which contains the target\ndefinitions. \"targets.py\" remains, but becomes a wrapper on top of\n\"targets.json\", with the same interface as before. This has the\nadvantage of not requiring code changes outside \"targets.py\".\n\nMost of the JSON definitions of targets were automatically generated by a\nscript (available upon request since it doesn't make a lot of sense to\ninclude it here), only those targets that had more than one parent in\nthe Python implementation were converted by hand. The target definitions\nshould be pretty self-explanatory. A number of things are different in\nthe JSON implementation (this is just a summary, check docs/mbed_targets.md\n(also part of this PR) for a more complete description):\n\n- \"program_cycle_s\" is now a value (as opposed to a function in the\nPython implementation), since it only returned a number in all the\nPython target implementations. The main definition that actually contains\nsome code (in class \"Target\") remains in target.py\n- array values in \"macros\" and \"extra_labels\" can be modified\ndynamically. Values can be added using \"macros_add\" and\n\"extra_labels_add\" or removed using \"macros_remove\" and\n\"extra_labels_remove\". This mechanism is available for all attributes\nwith a list type, but it's currently enabled only for \"macros\" and\n\"extra_labels\" to keep things simple.\n- \"init_hooks\"/\"binary_hook\" are now implemented in terms of a single\nJSON key valled \"post_binary_hook\". The corresponding code is also in\n\"targets.py\", under the various TargetCode classes (see for example\nLPC4088Code in targets.py).\n\nJust like in the Python implementation, a target can inherit from zero,\none or more targets. The resolution order for the target's attributes\nfollows the one used by the Python code (I used\nhttp://makina-corpus.com/blog/metier/2014/python-tutorial-understanding-python-mro-class-search-path\nas a reference for the implementation of resolution order).\n\nThis is obviously a very dangerous commit, since it affects all targets.\nI tested compilation for a number of targets (K64F, LPC1768, NRF51822)\nbut there's definitely a lot more to be done in terms of testing.\n\nI also tried to test in a different way: I wrote a script that imports the\nold (Python) and the new (JSON) implementations and verifies that the\nattributes in the old implementations exist and have the same values\nin the new implementations (it also verifies that the attribute\nresolution order is the same in the two implementations). If you're\ninterested, the script is here:\n\nhttps://gist.github.com/bogdanm/c9d8cf34214109a4b9079befed6b3c0c\n\nAnd the results of running the script are below (note that the script\noutputs only the target names that were found to be problematic):\n\nNRF51_MICROBIT_BOOT:\n    Resolution order is different in old and new\n        old: ['NRF51_MICROBIT_BOOT', 'MCU_NRF51_16K_BOOT_S110', 'MCU_NRF51_16K_BOOT_BASE', 'MCU_NRF51_16K_BASE', 'MCU_NRF51', 'Target', 'MCU_NRF51_S110']\n        new: ['NRF51_MICROBIT_BOOT', 'MCU_NRF51_16K_BOOT_S110', 'MCU_NRF51_S110', 'MCU_NRF51_16K_BOOT_BASE', 'MCU_NRF51_16K_BASE', 'MCU_NRF51', 'Target']\n    'extra_labels' has different values in old and new\n        old: ['NORDIC', 'MCU_NRF51', 'MCU_NRF51822', 'MCU_NORDIC_16K', 'MCU_NRF51_16K', 'MCU_NRF51_16K_BOOT', 'MCU_NRF51_16K_S110', 'NRF51_MICROBIT']\n        new: ['NORDIC', 'MCU_NRF51', 'MCU_NRF51822', 'MCU_NORDIC_16K', 'MCU_NRF51_16K', 'MCU_NRF51_16K_S110', 'MCU_NRF51_16K_BOOT', 'NRF51_MICROBIT']\n    'macros' has different values in old and new\n        old: ['NRF51', 'TARGET_NRF51822', 'TARGET_MCU_NORDIC_16K', 'TARGET_MCU_NRF51_16K', 'TARGET_MCU_NRF51_16K_BOOT', 'TARGET_OTA_ENABLED', 'TARGET_MCU_NRF51_16K_S110', 'TARGET_NRF51_MICROBIT', 'TARGET_NRF_LFCLK_RC']\n        new: ['NRF51', 'TARGET_NRF51822', 'TARGET_MCU_NORDIC_16K', 'TARGET_MCU_NRF51_16K', 'TARGET_MCU_NRF51_16K_S110', 'TARGET_MCU_NRF51_16K_BOOT', 'TARGET_OTA_ENABLED', 'TARGET_NRF51_MICROBIT', 'TARGET_NRF_LFCLK_RC']\nNRF51_MICROBIT:\n    Resolution order is different in old and new\n        old: ['NRF51_MICROBIT', 'MCU_NRF51_16K_S110', 'MCU_NRF51_16K_BASE', 'MCU_NRF51', 'Target', 'MCU_NRF51_S110']\n        new: ['NRF51_MICROBIT', 'MCU_NRF51_16K_S110', 'MCU_NRF51_S110', 'MCU_NRF51_16K_BASE', 'MCU_NRF51', 'Target']\n    'extra_labels' has different values in old and new\n        old: ['NORDIC', 'MCU_NRF51', 'MCU_NRF51822', 'MCU_NORDIC_16K', 'MCU_NRF51_16K', 'MCU_NRF51_16K_S110']\n        new: ['NORDIC', 'MCU_NRF51', 'MCU_NRF51822', 'MCU_NRF51_16K_S110', 'MCU_NORDIC_16K', 'MCU_NRF51_16K']\n    'macros' has different values in old and new\n        old: ['NRF51', 'TARGET_NRF51822', 'TARGET_MCU_NORDIC_16K', 'TARGET_MCU_NRF51_16K', 'TARGET_MCU_NRF51_16K_S110', 'TARGET_NRF_LFCLK_RC']\n        new: ['NRF51', 'TARGET_NRF51822', 'TARGET_MCU_NRF51_16K_S110', 'TARGET_MCU_NORDIC_16K', 'TARGET_MCU_NRF51_16K', 'TARGET_NRF_LFCLK_RC']\nNRF51_MICROBIT_OTA:\n    Resolution order is different in old and new\n        old: ['NRF51_MICROBIT_OTA', 'MCU_NRF51_16K_OTA_S110', 'MCU_NRF51_16K_OTA_BASE', 'MCU_NRF51_16K_BASE', 'MCU_NRF51', 'Target', 'MCU_NRF51_S110']\n        new: ['NRF51_MICROBIT_OTA', 'MCU_NRF51_16K_OTA_S110', 'MCU_NRF51_S110', 'MCU_NRF51_16K_OTA_BASE', 'MCU_NRF51_16K_BASE', 'MCU_NRF51', 'Target']\n    'extra_labels' has different values in old and new\n        old: ['NORDIC', 'MCU_NRF51', 'MCU_NRF51822', 'MCU_NORDIC_16K', 'MCU_NRF51_16K', 'MCU_NRF51_16K_OTA', 'MCU_NRF51_16K_S110', 'NRF51_MICROBIT']\n        new: ['NORDIC', 'MCU_NRF51', 'MCU_NRF51822', 'MCU_NORDIC_16K', 'MCU_NRF51_16K', 'MCU_NRF51_16K_S110', 'MCU_NRF51_16K_OTA', 'NRF51_MICROBIT']\n    'macros' has different values in old and new\n        old: ['NRF51', 'TARGET_NRF51822', 'TARGET_MCU_NORDIC_16K', 'TARGET_MCU_NRF51_16K', 'TARGET_MCU_NRF51_16K_OTA', 'TARGET_OTA_ENABLED', 'TARGET_MCU_NRF51_16K_S110', 'TARGET_NRF51_MICROBIT', 'TARGET_NRF_LFCLK_RC']\n        new: ['NRF51', 'TARGET_NRF51822', 'TARGET_MCU_NORDIC_16K', 'TARGET_MCU_NRF51_16K', 'TARGET_MCU_NRF51_16K_S110', 'TARGET_MCU_NRF51_16K_OTA', 'TARGET_OTA_ENABLED', 'TARGET_NRF51_MICROBIT', 'TARGET_NRF_LFCLK_RC']\nNOT OK: ['NRF51_MICROBIT', 'NRF51_MICROBIT_BOOT', 'NRF51_MICROBIT_OTA']\n\nThe reasons for the above output are subtle and related to the\nextremely weird way in which we defined target data in the Python\nimplementation: we used both class attributes and instance attributes.\nThis can complicate resolution order quite a bit and those two levels\ndon't exist in JSON: there's only one attribute type (equivalent to\nPython's instance attributes). To make that work, I had to change the\ninheritance order of the above targets (that use multiple inheritance)\nwhich in turn changed the order of some macros and extra_labels (and of\ncourse the resolution order). No harm done: the values are the same,\nonly their ordering is different. I don't believe this causes any\nproblems for 'extra_labels' and 'macros'.\n\nThis method of testing has its limitations though; in particular, it\ncan't test the hooks. I'm opened to ideas about how to test this better,\nbut I think that we need to remember that this commit might break some\ntargets and keep an eye out for \"weird errors\" in the future.","distinct":false,"url":"https://api.github.com/repos/theotherjimmy/mbed/commits/bc063a390320336f2da447f9e7d885cb9021469b"},{"sha":"b53c7eb128753369f9528f970f67240700073d37","author":{"name":"Bogdan Marinescu","email":"c425566f7466ddabfc2ed16361b3008bfda1dae9@arm.com"},"message":"Fixed description on 'default_toolchain' in the documentation","distinct":false,"url":"https://api.github.com/repos/theotherjimmy/mbed/commits/b53c7eb128753369f9528f970f67240700073d37"},{"sha":"f7b629664d9755efce01254aceeb47220b1c5876","author":{"name":"0xc0170","email":"1056aef94d1050b634331817f9314612695380a9@rocketmail.com"},"message":"HAL - nordic Lib folder back\n\nIt was removed with hal/rtos rearrangement.","distinct":false,"url":"https://api.github.com/repos/theotherjimmy/mbed/commits/f7b629664d9755efce01254aceeb47220b1c5876"},{"sha":"ea72444c968c650561713b0dc6eed607c251a5f3","author":{"name":"0xc0170","email":"1056aef94d1050b634331817f9314612695380a9@rocketmail.com"},"message":"mbed lib revision - 121","distinct":false,"url":"https://api.github.com/repos/theotherjimmy/mbed/commits/ea72444c968c650561713b0dc6eed607c251a5f3"},{"sha":"efe8457036c99b54a23e3ad26eda021e48a800f3","author":{"name":"Jerome COUTANT","email":"8f0b311338950a4a0626b590a9e8b43e782f63e9@st.com"},"message":"Update .gitignore for build directory","distinct":false,"url":"https://api.github.com/repos/theotherjimmy/mbed/commits/efe8457036c99b54a23e3ad26eda021e48a800f3"},{"sha":"1ab7d738051bc51b48f1678469797fbd0f415e14","author":{"name":"Christopher Haster","email":"c9dfbd20ba219d94babf08c3d38af60e70dc2c1e@utexas.edu"},"message":"Added Thread::start and Thread::join for managing lifetime of threads\n\n- Allows threads to started separately from when they are declared,\n  avoiding the need to dynamically allocate threads at runtime.\n- Allows multiple threads to join without forceful termination. Allowing\n  threads to synchronize on cleanup.","distinct":false,"url":"https://api.github.com/repos/theotherjimmy/mbed/commits/1ab7d738051bc51b48f1678469797fbd0f415e14"},{"sha":"627fe55c21aaf61933fc4603c98ab72c3eb852bd","author":{"name":"0xc0170","email":"1056aef94d1050b634331817f9314612695380a9@rocketmail.com"},"message":"Synch - fix lwip-eth path\n\nFixes #1786 issue","distinct":false,"url":"https://api.github.com/repos/theotherjimmy/mbed/commits/627fe55c21aaf61933fc4603c98ab72c3eb852bd"},{"sha":"745ebbf4557f0f3964f73063c1d88ddbcda0ed22","author":{"name":"Martin Kojtal","email":"1056aef94d1050b634331817f9314612695380a9@rocketmail.com"},"message":"Merge pull request #1787 from 0xc0170/fix_1786\n\nSynch - fix lwip-eth path","distinct":false,"url":"https://api.github.com/repos/theotherjimmy/mbed/commits/745ebbf4557f0f3964f73063c1d88ddbcda0ed22"},{"sha":"db49c1edebc3516ee61197641f7cfbdeaea5482f","author":{"name":"Martin Kojtal","email":"1056aef94d1050b634331817f9314612695380a9@rocketmail.com"},"message":"Merge pull request #1789 from mbedmicro/release\n\nRelease v121","distinct":false,"url":"https://api.github.com/repos/theotherjimmy/mbed/commits/db49c1edebc3516ee61197641f7cfbdeaea5482f"},{"sha":"9328e4a660cf16f7f9371e1fe2ca130698123399","author":{"name":"0xc0170","email":"1056aef94d1050b634331817f9314612695380a9@rocketmail.com"},"message":"Travis - remove install sh script\n\ntravis.yaml file - add before install, print versions of tools we use","distinct":false,"url":"https://api.github.com/repos/theotherjimmy/mbed/commits/9328e4a660cf16f7f9371e1fe2ca130698123399"},{"sha":"a59785888ddf68e0673ff0403dee87846b1d7456","author":{"name":"Martin Kojtal","email":"1056aef94d1050b634331817f9314612695380a9@rocketmail.com"},"message":"Merge pull request #1790 from 0xc0170/fix_travis\n\nTravis - remove install sh script","distinct":false,"url":"https://api.github.com/repos/theotherjimmy/mbed/commits/a59785888ddf68e0673ff0403dee87846b1d7456"},{"sha":"0203b96b5fe58b247ff229549d20ab4c1ccf0d5f","author":{"name":"Martin Kojtal","email":"1056aef94d1050b634331817f9314612695380a9@rocketmail.com"},"message":"Merge pull request #1780 from jeromecoutant/dev_gitignore\n\nUpdate .gitignore for build directory","distinct":false,"url":"https://api.github.com/repos/theotherjimmy/mbed/commits/0203b96b5fe58b247ff229549d20ab4c1ccf0d5f"},{"sha":"d898c11e428f3193eca33c9638efeb377ccd9f60","author":{"name":"0xc0170","email":"1056aef94d1050b634331817f9314612695380a9@rocketmail.com"},"message":"api - doxygen improvements, unused parameters fixes\n\nThis patch is taken from mbed-drivers master.","distinct":false,"url":"https://api.github.com/repos/theotherjimmy/mbed/commits/d898c11e428f3193eca33c9638efeb377ccd9f60"},{"sha":"985255dbb5ad6c1b962ee6b2519f6e01884d650f","author":{"name":"0xc0170","email":"1056aef94d1050b634331817f9314612695380a9@rocketmail.com"},"message":"assert - use fprintf (if serial=1) and mbed_die","distinct":false,"url":"https://api.github.com/repos/theotherjimmy/mbed/commits/985255dbb5ad6c1b962ee6b2519f6e01884d650f"},{"sha":"57bc433986b870e9109d47775e92b95bdb49be4d","author":{"name":"geky","email":"c9dfbd20ba219d94babf08c3d38af60e70dc2c1e@utexas.edu"},"message":"Fixed NULL usage on non-pointer member in thread\n\nper @theotherjimmy","distinct":false,"url":"https://api.github.com/repos/theotherjimmy/mbed/commits/57bc433986b870e9109d47775e92b95bdb49be4d"},{"sha":"ffa9d17bab91ba956763674a7f8123df43638dd7","author":{"name":"Martin Kojtal","email":"1056aef94d1050b634331817f9314612695380a9@rocketmail.com"},"message":"Merge pull request #1751 from mbedmicro/json_targets\n\nMoved target definitions to JSON format","distinct":false,"url":"https://api.github.com/repos/theotherjimmy/mbed/commits/ffa9d17bab91ba956763674a7f8123df43638dd7"},{"sha":"cd9f9331dc6a9d398d990fb2c4385d21e00319e3","author":{"name":"Sam Grove","email":"7fe9b298bb98a934ab3201957d91bc898719625a@gmail.com"},"message":"Updates for CI (#1760)\n\n* Dont exclude tests from magical lists\r\n\r\n* update default toolchain locations for windows pointing to latest supported versions\r\n\r\n* Fixing build loop in build_release.py\r\n\r\n* Fixing incorrect target name in release script, preventing traceback in this case\r\n\r\n* Breaking up the uploading of build/test results.\r\nIt defaults to 1000 'projectRuns' per POST call, though this can be\r\nmodified via the '-l' parameter when invoking 'add-project-runs'.\r\n\r\n* remove default path to GCC. Setting takes priority to PATH so this breaks linux and Mac\r\n\r\n* revert is_supported chages in favor of alternative command line option","distinct":false,"url":"https://api.github.com/repos/theotherjimmy/mbed/commits/cd9f9331dc6a9d398d990fb2c4385d21e00319e3"},{"sha":"15db3951df6b800fcd2f27232b178eb36378331f","author":{"name":"Christopher Haster","email":"c9dfbd20ba219d94babf08c3d38af60e70dc2c1e@utexas.edu"},"message":"Add Callback, an improved FunctionPointer class\n\n- Adopt C++11 style template arguments, requires rename to Callback\n- Add constructor for C style callback functions\n- Add constructor for Callbacks\n- Add static function for passing to C style callbacks","distinct":false,"url":"https://api.github.com/repos/theotherjimmy/mbed/commits/15db3951df6b800fcd2f27232b178eb36378331f"},{"sha":"2e112f535ac1b2ee3ee2ef9e25824b09f7f00bfc","author":{"name":"Christopher Haster","email":"c9dfbd20ba219d94babf08c3d38af60e70dc2c1e@utexas.edu"},"message":"Add backward compatiblity for FunctionPointer class using Callback\n\neffectively:\ntypedef Callback<R(A)> FunctionPointerArg1<R,A>\ntypedef Callback<R()> FunctionPointerArg1<R,void>\ntypedef Callback<R()> FunctionPointer\ntypedef Callback<R()> event_callback_t","distinct":false,"url":"https://api.github.com/repos/theotherjimmy/mbed/commits/2e112f535ac1b2ee3ee2ef9e25824b09f7f00bfc"},{"sha":"a7f426285802ec1143a6ff83f7df1eec7be7a833","author":{"name":"Christopher Haster","email":"c9dfbd20ba219d94babf08c3d38af60e70dc2c1e@utexas.edu"},"message":"Adopt Callback class in hal","distinct":false,"url":"https://api.github.com/repos/theotherjimmy/mbed/commits/a7f426285802ec1143a6ff83f7df1eec7be7a833"}]}
{"actor":{"display_login":"theotherjimmy"}}