On 08/07/13 16:20, Lev Serebryakov wrote: > Hello, David. > You wrote 8 июля 2013 г., 16:11:39: > > DB> In an ideal world, TI would maintain its own apt repository (and yum), > And FreeBSD packages for i386, amd64, arm, MIPS, PowerPC, and ia64? And > repository for NetBSD and OpenBSD and MacOS X too?
TI should (in an ideal world) have repositories containing toolchain releases for their chips, in a form suitable for the most commonly used platforms - and in source code for use on other platforms. If a lot of people want to compile for the msp430 using OpenBSD on PPC processors, then it makes sense for TI to support that too - otherwise, unusual users can use the source and compile themselves. TI could (again in an ideal world) allow external maintainers here - if they don't want to maintain an OpenBSD repository themselves, but someone else is willing to do so, then TI could host it. > > DB> supporting the toolchains for a variety of distros. But there should > DB> not be packages such as "msp430-gcc" and "msp430-libc" in these > DB> repositories - there should be packages such as > DB> "msp430-release-20130708" containing all the toolchain. And these > DB> should not contain files such as "/usr/bin/msp430-gcc" - they should > DB> contain files such as "/opt/msp430-20130708/bin/msp430-gcc". Of course > DB> such binaries should not be on the user's path - you must say exactly > DB> which toolchain you want in your makefile (or Eclipse/CCS project setup). > It is COMPLETELY out of unix-way! And, yes, what should FreeBSD users do > in this your big-corporation-centric "ideal world", for example? > I don't develop /for/ unix - nor does anyone using the msp430. We develop /using/ unix (some poor souls have to live with Windows for development - but much the same applies to them). When I write software for *nix, I use *nix philosophies. When I write software for Windows, I use Windows philosophies. When I write embedded software, I use embedded software philosophies. And good embedded development practice says that changing any aspect of your toolchain is a major change to your project, and it is not done lightly. The toolchain is /part/ of your project. When you - or anyone else - needs to do maintenance on an old project, you do not change the toolchain just because there is a newer version out. You do not risk unexpected problems because the new compiler has slightly different behaviour, or the new library has a new bug. Compiling using whatever version of /usr/bin/msp430-gcc you have on hand is simply unprofessional. It is certainly possible for distro (Linux, *BSD, etc.) maintainers to have msp430 packages in their normal repositories, but it is only a good idea if they also follow the same sort of release numbering and avoid general "latest version" releases. It only really makes sense for "continuous update" or "rolling" distributions - a developer should not have to update their entire OS in order to get a newer msp430 release, and they should always be able to get older releases. This is why I think it makes sense for these repositories to be separate from the main distro repositories. I think it makes sense for TI to host them - but it would also be possible to have them as third-party hosted (in the same manner as Ubuntu PPA repositories). Note that this is completely different from more "normal" programs, when you are usually happy with the latest version - and updates will replace older versions instead of being installed alongside them. I am certainly not looking for a "big-corporation-centric" solution. I work for a small company, and I am thinking small-developer-centric, and I don't understand your thinking here. Perhaps I had not explained myself very well. > Good toolchain should be based on official released sources (not some > obscure snapshots from binutils/gcc GIT), and be integrated in upstream > (so, it build should be as easy as "./configure --target-=msp430 && gmake > all install") or provided as one manageable patchset, not targeted for ANY > specific host (Ubuntu, Debian, Gentoo, Widnows, FreeBSD, whatever). Have you ever done embedded development work? Have you ever worked with gcc releases? Have you ever worked at getting changes for gcc into the upstream trees and then releases? gcc is a fantastic piece of work - both as software itself, and as a project, and I have unbounded respect for the people working on it. But one of it's biggest strength - it's flexibility, portability, and configurability - is also its biggest weakness. It takes time to move big changes (and sometimes even small changes) through the system and into releases. It can take many months, or longer, for changes to make their way to release versions - partly because it must be confirmed that those changes don't disrupt any other working host-target combination. Microcontroller manufacturers can't wait for that cycle, nor can users. So the normal way of working is for the maintainers of an embedded toolchain to base their build on a particular release of gcc, along with patches to include support for the latest devices, the latest additions to gcc (such as target-specific attributes), the latest device header files, and the latest libraries. This is the way Peter (and his predecessors) handled msp430, it is the way Atmel handles it for the AVR, the way CodeSourcery handles it for the ports they maintain (MIPS, ARM, PPC, and many others). The changes always (or almost always) get merged into the upstream, but that process takes time. The other big problem with working with upstream releases is that you get one release for binutils, one release for gcc, and one release for the libraries. To be useful to the end-user developer, you need a single release covering all three - with the knowledge that these all work together, and have all been tested together. > > It is work of OS/Distro maintainers to build binary packages for specific > OS/Distro, in format, used in this OS/Distro. For example, FreeBSD doesn't > have /opt at all! And, of course, it needs completely different binaries. > And, of course, it is used to have ${target}-prefixed tools here! > > Peter's MSP430-gcc is IDEAL way to distribute OPEN SOURCE toolchain! No, Peter's method is not ideal for users - it is pretty good, and it is more than can be expected of him, but it is not quite complete. In particular, having source-only releases is a big barrier to many users (even Linux users). Obviously the source release is the most important, and no one could possibly complain that Peter hasn't made pre-packaged bundles for different distros and OS's - but we /can/ expect that from a big company like TI. Also note that in Peter's releases, he gives a set of specific upstream releases combined with a set of release-specific patches. This is /exactly/ the arrangement I want. The only difference is that in addition to having this available as source code, I also think it should be available as pre-built binaries for commonly used development platforms, as a convenience to users. And I want all such upstream+patches bundled releases to be available, rather than just the latest versions, and I to avoid the idea that you can have a "default" version of the tool. > > And I had enough this Linux- and corporate-centric shit in times of first > Non-WinCE-based PD "Agenda VR3", which had toolchain in binary-only form, > and sources looks like "get this snapshot of egcs3 and apply these 1348.5 > patches in order which is our trade secret"! > I think you would be entirely happy with the sort of system I am asking for - but I was perhaps unclear in how I said it. So - just to make sure there is no misunderstanding - let me say again that I want binary releases in addition to source releases, not instead of them. I want everything pushed upstream for the future, but I want upstream+patch releases maintained and approved by TI (or Redhat, of course) so that we don't have to wait for upstream. I want release bundles that combine all three important parts of the toolchain - gcc, binutils and libraries. (gdb, programmers, IDEs, and anything else can be independent, as they don't affect the actual code.) And I want to be able to easily get the very latest releases, and easily get all previous releases, I want them all to be easily installed on the same system at the same time, and I want them to work on a wide variety of development hosts (with the source as a fall-back when needed). I realise I want quite a lot here :-) David ------------------------------------------------------------------------------ This SF.net email is sponsored by Windows: Build for Windows Store. http://p.sf.net/sfu/windows-dev2dev _______________________________________________ Mspgcc-users mailing list Mspgcc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mspgcc-users