Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932844AbbDKBIn (ORCPT ); Fri, 10 Apr 2015 21:08:43 -0400 Received: from mail-pa0-f53.google.com ([209.85.220.53]:34319 "EHLO mail-pa0-f53.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755719AbbDKBIl (ORCPT ); Fri, 10 Apr 2015 21:08:41 -0400 MIME-Version: 1.0 X-Originating-IP: [116.83.156.80] In-Reply-To: <20150410212054.GE569@fuloong-minipc.musicnaut.iki.fi> References: <20140812153812.2923046a@monolith.infinux.org> <20150410212054.GE569@fuloong-minipc.musicnaut.iki.fi> Date: Fri, 10 Apr 2015 20:08:40 -0500 Message-ID: Subject: Re: OT: Open letter to the Linux World From: Rob Landley To: Aaro Koskinen Cc: Denys Vlasenko , Christopher Barry , Linux Kernel Mailing List Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 5575 Lines: 112 On Fri, Apr 10, 2015 at 4:20 PM, Aaro Koskinen wrote: > Hi, > > On Wed, Apr 08, 2015 at 07:37:15PM -0500, Rob Landley wrote: >> Heck, the FSF's entire "It's GNU Linux, Dammit! Call it by its proper >> name: GNU/Linux/dammit" campaign is seriously irritating, and part of >> what I was doing with busybox was trying to create a linux development >> system without a single gnu package in it (busybox, uclibc, tinycc) >> capable of rebuilding itself under itself, and then ask Stallman "I >> know you're going to insist this isn't a Linux system but a >> GNU/Linux/Dammit system, I'd just like you to try to explain _how_." >> (Preferably capturing this on video.) > > What was the result of this work? http://landley.net/aboriginal/about.html My old self-hosting system was 7 packages: linux, busybox, uClibc, gmake, gcc, binutils, and bash. The new one I'd like to do is 4 packages: linux, toybox, musl, and qcc. Right now, I'm focusing on getting toybox to 1.0 as fast as possible, then I worry about other stuff. > Did you manage to build a self-hosting system? Yeah, but it's still using a gcc toolchain. (The last gplv2 release of gcc, binutils, and make, circa 2006.) I was going to replace it with http://landley.net/code/tinycc (and then http://landley.net/code/qcc). The idea was to take my tcc fork and make it a multiplexer like busybox (so it could run as cc, ld, strip, as, and so on depending on what name you called it under; one binary with lots of symlinks to it). The qcc idea was to rip out tcc's code generator and replace it with QEMU's tcg (tiny code generator), so you'd turn the compiler behind http://bellard.org/tcc/tccboot.html (I.E. this already _built_ a working kernel at one point, albeit with a lot of cheating that I was working to fix) and make it support all the targets qemu does, leveraging qemu's developer base to keep them well-supported. _AND_ I got permission to BSD license his tcc code, and qemu's tcg is already BSD licensed, so that fixes the license problem. But I got distracted by toybox (the history is https://lwn.net/Articles/478308/ then https://www.youtube.com/watch?v=SGmtP5Lg_t0 then https://lwn.net/Articles/629362/ and I'm currently dealing with merging http://lists.landley.net/pipermail/toybox-landley.net/2015-April/004024.html and yes that's the Android Core maintainer posting to the toybox list). So I've been kinda busy with other things of late. :) These days I'm waiting for llvm to mature, but a month or two back somebody picked up my qcc idea (combine tinycc's front end with tcg's back end to get a simple bsd licensed C99 compiler that supports a lot of targets) and actually started seriously working on it. So at this point I'm looking to contribute to _his_ project. (I'd link to him but I'm in japan at the moment and those files are back in texas. Ping me after the 20th if you're still curious.) > What implementation of "make" did you use to build the kernel? I plan on writing my own, but it's a bit down on the todo list. For qcc it was going to be one of the multiplexer commands like nm and objdump. Maybe I should implement it in toybox instead, but it's not in the 1.0 roadmap at http://landley.net/toybox/roadmap.html and I'm not adding more stuff to that until _after_ the release. (Well not that I have to implement, somebody wants to send me a command already written I'll certainly look at it...) I note that the hard part with getting the kernel to build with tinycc was actually the more obscure binutils things. When I was trying to get my tinycc fork to build the kernel (without using any parts of gcc or binutils) one of the first things that failed was generating a header file that did either nm or objdump -d on a binary (I forget which) and ran the result through sed to generate a header file with structure offsets. Tinycc had an assembler but not a disassembler, you see... These days I'm waiting for http://ellcc.org and similar to bear fruit. For the linker they're either using http://lld.llvm.org but the musl-cross toolchain is using https://github.com/sabotage-linux/libelf-compat and before they were using https://fedorahosted.org/releases/e/l/elfutils/ and I still haven't had a chance to look at the LLVM toolchain AOSP is building. It's all up in the air right now as everybody works to clean up after the "career limiting move" that was GPLv3. The android guys are using their own weird make setup (the Android.mk files), and they tell me they have a brand new build tool to replace make that they're they're porting the AOSP build to, which I should go take a look at and maybe come up to speed on. But really, I wrote my own "sed" and made Linux From Scratch build with it, and then did it AGAIN from scratch under a different license. I'm partway through writing my own shell for toybox and am supporting bash syntax in it. Writing my own make that handles gmake stuff packages actually use isn't that much harder if it comes to it. (But as with init systems, it's a ways down on my todo list at the moment. Get toybox to 1.0 so we have a public domain posix+LSB command line that can build Linux From Scratch, _then_ see where toolchains and such are. I know musl-libc.org is in good shape, llvm is progressing without me, if I need to write a make I can do that...) Rob -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/