X-Original-To: alpine-devel@lists.alpinelinux.org Received: from mail-lf0-f68.google.com (mail-lf0-f68.google.com [209.85.215.68]) by lists.alpinelinux.org (Postfix) with ESMTP id 157BE5C41CF for ; Wed, 27 Jul 2016 12:59:51 +0000 (GMT) Received: by mail-lf0-f68.google.com with SMTP id 33so2025775lfw.3 for ; Wed, 27 Jul 2016 05:59:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:date:from:to:subject:message-id:mime-version :content-transfer-encoding; bh=fPfpGOi6L5lJVBuWOwsAjxJV2D7c5fB2DbjB+I2bnHY=; b=Ml1k3nlHScmSZFaE3e5gEtl+FGegFaCZ3T6YyqpmfFdF8UvARY51lc6c/J3ZT0RD72 R8xaPBQh/jLB/5SOZCRq1JBNX7/1L/+PIUpDNnofvGi8uGnlC7Wv4LA3f9FoFOpJw1WH ziadv6sKx8jYgcTAeMdnf6+kaSBaGn60f4LV2VSlOR/wkjukut4tmWCSAKeejsOp0aCG BnaC96cPmC7YxtWmixnMGVnwAn5bCW9X0+dWuADrAg0RAbIF0uZcJIgApDewWDJYM75J tE3ulvkPPcmi10CSdSgyMB1QBa/Y52OjVturMjTVLR/QbmxwllH+7YjM+FzcU6siDgE7 NOKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:date:from:to:subject:message-id :mime-version:content-transfer-encoding; bh=fPfpGOi6L5lJVBuWOwsAjxJV2D7c5fB2DbjB+I2bnHY=; b=kt6S/XFMMNpgkrULrNYSyVZbnOGezMUmcRSmk9ovFd5j/yrxMVXJ8NBDvJInqPqQAh uJGpsH2/vOqkBjFAleGl28Te0Zj6OP5jgKPWpdjgOSn74zGCRPP5SLO1GDLfL8o7lT8A ro8hlVSkluo49+XXgbYZBBsX35yaloPFXJMf7VV7lsAo6LakscH4QjaRM+Z3smFXzGUa FkI+Eh9wWQ/A+Y390biLDn21HEJYCR378OqakYkillUw/3N/VORs/zrPvvItf9Q1lmSI TXtVEdqP8v9pFm7uyW1VT0VViCPhtpIgt6XF3QZXVtXMOgG1JnbtgTyAmcX2xAPPcUwv KsDg== X-Gm-Message-State: AEkoouv1D+eFSebtv8y31ELcCJ9UodssQfvqft4O4MZDbc0QPCHpmyKGq3xor1axM+IEOQ== X-Received: by 10.25.23.8 with SMTP id n8mr11373850lfi.205.1469624389313; Wed, 27 Jul 2016 05:59:49 -0700 (PDT) Received: from vostro.util.wtbts.net ([2001:1bc8:101:f402:e66f:13ff:fef3:8cd0]) by smtp.gmail.com with ESMTPSA id f139sm979853lfb.11.2016.07.27.05.59.48 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 27 Jul 2016 05:59:49 -0700 (PDT) Sender: =?UTF-8?Q?Timo_Ter=C3=A4s?= Date: Wed, 27 Jul 2016 15:59:46 +0300 From: Timo Teras To: "alpine-devel" Subject: [alpine-devel] Alpine (cross) building Message-ID: <20160727155946.4aa60480@vostro.util.wtbts.net> X-Mailer: Claws Mail 3.13.2 (GTK+ 2.24.28; x86_64-alpine-linux-musl) X-Mailinglist: alpine-devel Precedence: list List-Id: Alpine Development List-Unsubscribe: List-Post: List-Help: List-Subscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Hi, We've recently had several people working on different new ports e.g. aarch64, s390x and sh4. There's also feature request about mips on bug tracker. This means we need proper cross-compile support for bootstrapping new architectures. And preferably even pure cross-compile for those arches that are embedded slow machines. While for the occational bootstrap my earlier scripts were enough. They don't really scale that well, and it was a slightly hacky way to do it. As result, I took the effort to do proper cross-building support to abuild itself. This is now available in abuild.git on the cross-build branch (hopefully to be in git master soon) at: http://git.alpinelinux.org/cgit/abuild/log/?h=cross-build This allowed to clean up the bootstrap process, and all of aports bootstrap packages have been fixed to work again. The bootstrap script itself now lies in aports.git/scripts/bootstrap.sh. If all goes well, it'll do a complete bootstrap (create cross compiler, and use that to cross compile new base system for target architecture). http://git.alpinelinux.org/cgit/aports/tree/scripts/bootstrap.sh I tested these to successfully bootstrap aarch64 and armv7 (thumb2) arches. At least aarch64 we hope to have as a supported arch in near future. We are still working out some issues in the native toolchain, and checking that everything builds. While this is a major improvement, I still have more ideas on what to improve. As next step I'm planning to rewrite alpine-iso (the Makefile we use to create bootable images) as set of scripts in aports.git/scripts/ and have them support cross-building boot media and reuse existing scripts such as update-kernel. The ultimate goal is to redo the builder setup to more CI like setup. I'm currently looking at buildbot, if we can write a plugin that would allow buildbot to handle build dependencies, and distribution of jobs. This would allow several improvements: - would simplify us supporting contributed ppa type aports trees our infra would build; and simplify setting up your own build instance - one builder slave would build for all branches, greatly simplifying the steps when a stable version is branched - for embedded cpu types: cross-build packages on fast machines if package supports that, otherwise native build it - allow build master to coordinate which builder's noarch package becomes official, and start sharing the noarch packages - make command that test builds given commit and finally emails the build results - rework the change process to go via buildbot. developers send pull request to buildbot which builds it everywhere, and only after that buildbot would commit it to our master aports.git. greatly improving stability of edge. There is still quite a way to get there. But I wanted to write about what I have in mind, and to also get some feedback if there's something I missed, or better alternatives. Or even better if someone is working on something similar and can contribute. :) Thanks, Timo --- Unsubscribe: alpine-devel+unsubscribe@lists.alpinelinux.org Help: alpine-devel+help@lists.alpinelinux.org ---