Rough backport of ccsdisk support
authorRISCi_ATOM <bob@bobcall.me>
Sun, 10 Feb 2019 19:00:10 +0000 (14:00 -0500)
committerRISCi_ATOM <bob@bobcall.me>
Sun, 10 Feb 2019 19:00:10 +0000 (14:00 -0500)
Config.in
Makefile
docs/ccs.md [new file with mode: 0644]
target/Makefile
target/ccsdisk/Config.in [new file with mode: 0644]
target/ccsdisk/Makefile [new file with mode: 0644]
target/ccsdisk/files/README [new file with mode: 0644]

index 47391703b5c3f26a11b5e031bd5d78fa71023a06..d8efc18921dced30e87673d392d34484c8210271 100644 (file)
--- a/Config.in
+++ b/Config.in
@@ -31,4 +31,6 @@ source "target/sdk/Config.in"
 
 source "target/toolchain/Config.in"
 
+source "target/ccsdisk/Config.in"
+
 source "tmp/.config-package.in"
index b220dfd3c56a11f3e27d70e3d6e58cc6448abd2f..554902316681f91475b61042e50d4a2dda309f97 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -87,6 +87,8 @@ prereq: $(target/stamp-prereq) tmp/.prereq_packages
 checksum: FORCE
        $(call sha256sums,$(BIN_DIR))
 
+ccsdisk: $(target/ccsdisk/install)
+
 diffconfig: FORCE
        mkdir -p $(BIN_DIR)
        $(SCRIPT_DIR)/diffconfig.sh > $(BIN_DIR)/config.seed
diff --git a/docs/ccs.md b/docs/ccs.md
new file mode 100644 (file)
index 0000000..bad9d90
--- /dev/null
@@ -0,0 +1,23 @@
+# CCS (Complete Corresponding Source) Requirements
+
+As a Free Software project, libreCMC works to go above and
+beyond its license obligations to be a good neighbor and to
+promote the ideals of Free Software. The project was founded
+on the idea that everyone should have the *freedom* to control
+the hardware they own, which means being able to fully control
+what it does and what runs on it. To ensure that everyone continues
+to have this freedom, a mechanism was added to the build system [1]
+to generate a CCS disk which OEMs and others would be able to
+distribute with devices for compliance and to push the idea that
+sources should be provided with a device at the time of sale.
+
+## `make ccsdisk`
+
+A new target was created to build a CCS disk based upon the option of upstream
+sources or to use a local checkout. As it stands, this includes everything except
+for u-boot sources for a given target. In the near future, the libreCMC project
+will start including versions of u-boot for all offically supported targets and
+going forward a requirement for offical hardware support will be u-boot in libreCMC.
+
+
+[1] libreCMC is a fork of OpenWrt, which both use a fork of [Buildroot](https://buildroot.org).
index db87c78aaef62b541d30c1ce9a43eaa78b42c30a..c8ee54e3d765d0485d5f458cce6969aa76da0b66 100644 (file)
@@ -6,12 +6,13 @@
 #
 curdir:=target
 
-$(curdir)/builddirs:=linux sdk imagebuilder toolchain
+$(curdir)/builddirs:=linux sdk imagebuilder toolchain ccsdisk
 $(curdir)/builddirs-default:=linux
-$(curdir)/builddirs-install:=linux $(if $(CONFIG_SDK),sdk) $(if $(CONFIG_IB),imagebuilder) $(if $(CONFIG_MAKE_TOOLCHAIN),toolchain)
+$(curdir)/builddirs-install:=linux $(if $(CONFIG_SDK),sdk) $(if $(CONFIG_IB),imagebuilder) $(if $(CONFIG_MAKE_TOOLCHAIN),toolchain) $(if $(CONFIG_CCS),ccsdisk)
 
 $(curdir)/sdk/install:=$(curdir)/linux/install
 $(curdir)/imagebuilder/install:=$(curdir)/linux/install
+$(curdir)/ccsdisk/install:=$(curdir)/ccsdisk/install
 
 $(eval $(call stampfile,$(curdir),target,prereq,.config))
 $(eval $(call stampfile,$(curdir),target,compile,$(TMP_DIR)/.build))
diff --git a/target/ccsdisk/Config.in b/target/ccsdisk/Config.in
new file mode 100644 (file)
index 0000000..31f4a4a
--- /dev/null
@@ -0,0 +1,21 @@
+menuconfig CCS
+        bool "Build the libreCMC CCS (Complete Corresponding Source) Disk"
+        depends on !EXTERNAL_TOOLCHAIN
+        default BUILDBOT
+        help
+          This generates a CCS disk for distribution with devices that ship
+         with libreCMC. Note that this may omit some components, ex. u-boot
+         for a given target, which should be part of the CCS. Please see /docs/ccs.md
+
+       config CCS_GIT_UPSTREAM
+               string "Enter git repository to clone" if CCS
+               default "https://gogs.librecmc.org/librecmc" if !CCS_GIT_TOPDIR
+
+       config CCS_GIT_TOPDIR
+               bool "Use local checkout for sources" if CCS
+               help
+                 If using this option, make sure that all changes have been
+                 properly checked in.
+
+
+
diff --git a/target/ccsdisk/Makefile b/target/ccsdisk/Makefile
new file mode 100644 (file)
index 0000000..b8e5c85
--- /dev/null
@@ -0,0 +1,41 @@
+#
+# Copyright (C) 2019 Robert Call <bob@bobcall.me>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+include $(INCLUDE_DIR)/kernel.mk
+include $(INCLUDE_DIR)/version.mk
+
+override MAKEFLAGS=
+
+CCS_NAME:=$(VERSION_DIST_SANITIZED)-$(VERSION_NUMBER)-src
+CCS_BUILD_DIR:=$(BUILD_DIR)/$(CCS_NAME)
+ISO_BUILD_DIR:=$(CCS_BUILD_DIR)/iso
+
+all: install
+
+$(BIN_DIR)/$(CCS_NAME).tar.gz:
+       mkdir -p $(BIN_DIR)
+       mkdir -p $(CCS_BUILD_DIR)
+       $(if $(CONFIG_CCS_GIT_TOPDIR),(cd $(CCS_BUILD_DIR); git clone $(TOPDIR) librecmc),(cd $(CCS_BUILD_DIR); git clone $(CONFIG_CCS_GIT_UPSTREAM) librecmc))
+       $(CP) $(TOPDIR)/.config $(CCS_BUILD_DIR)/librecmc
+       $(CP) -r $(TOPDIR)/dl $(CCS_BUILD_DIR)/librecmc/
+
+createiso:
+       mkdir -p $(ISO_BUILD_DIR)/bin/$(BOARD)
+       (cd $(CCS_BUILD_DIR); $(TAR) -czf $(ISO_BUILD_DIR)/$(CCS_NAME).tar.gz librecmc)
+       $(CP) ./files/README $(ISO_BUILD_DIR)
+       $(CP) $(BIN_DIR) $(ISO_BUILD_DIR)/bin/$(BOARD)
+       $(VERSION_SED_SCRIPT) $(ISO_BUILD_DIR)/README
+       genisoimage -J -joliet-long -r -o $(BIN_DIR)/$(CCS_NAME).iso $(ISO_BUILD_DIR)
+
+download:
+compile:
+install: clean $(BIN_DIR)/$(CCS_NAME).tar.gz createiso
+
+
+clean:
+       rm -rf $(CCS_BUILD_DIR) $(BIN_DIR)/$(CCS_NAME).tar.gz $(BIN_DIR)/$(CCS_NAME)-src.iso
diff --git a/target/ccsdisk/files/README b/target/ccsdisk/files/README
new file mode 100644 (file)
index 0000000..840888f
--- /dev/null
@@ -0,0 +1,94 @@
+                    ____  _____         ____  
+  _ _ _            |  __||     ||  __| 
+ | (_) |__ _ _ ___ | |   | | | || |    
+ | | | '_ \ '_/ -_)| |__ | | | || |__  
+ |_|_|_.__/_| \___||____||_|_|_||____| 
+ -----------------------------------------
+  The libre embedded GNU/Linux distro.
+
+This compact disk contains the source code and firmware images
+for the %T line of routers.
+
+
+Disk Layout:
+============================
+
+/bin/%T/*                              : Contains firmware images for %T family of routers
+
+libreCMC-%V-src.tar.gz         : The full libreCMC source code w/ original configuration.
+
+
+Building libreCMC image from source:
+============================
+
+To build your own firmware, you need to have access to a GNU/Linux system
+(case-sensitive filesystem required) with the following installed :
+
+gcc, binutils, bzip2, flex, python, perl, make, find,
+grep, diff, unzip, gawk, getopt, libssl-dev (openssl-devel), libz-dev and libc headers.
+
+References to this and other documentation use : "$LIBRECMC_SRC" , which
+is the directory where the libreCMC source code resides.
+
+Before starting, please extract : libreCMC-%V.tar.gz
+
+tar fxv librecmc-%V.tar.gz
+
+cd libreCMC/
+
+Within the libreCMC src. directory (in this case, trunk), please use "make menuconfig" to create your 
+desired configuration for the toolchain and firmware. Please note that the default configuration is 
+what was used to build the firmware image for your router. It is advised that you use this configuration. If
+you need to restore the default configuration, copy librecmc_config to libreCMC/trunk/.config
+
+Simply running "make" will build your firmware. The build system will extract all included sources, 
+build the cross-compile toolchain, the kernel and all chosen applications. If there is an issue, please run:
+
+make V=s
+
+This will show debugging output and give a clue as to why the build failed.
+
+When the build completes without any issues, the resulting librecmc-ar71xx-generic-tpe-r1100-squashfs-sysupgrade.bin image will 
+be found in : $SRC_ROOT/bin/targets/ar71xx/
+
+Flashing The libreCMC firmware
+============================
+
+1) Open a web browser and go to : https://192.168.10.1
+
+2) You will see a security warning because SSL cert is self-
+signed. Click the "understand the risks" and then "add exception" buttons.
+
+3) Enter the admin password for the router (stock password is : none )
+
+4) The backup / flash utility is under "System -> Backup / Flash Firmware".
+
+5) Make sure to backup your configuration (if you are upgrading to a new release)
+by clicking the "Generate archive" button. This will download a file named 
+backup-libreCMC-$(DATE).tar.gz
+
+6) Upload the new firmware by clicking the "browse" button under "Flash new firmware image".
+If you wish to keep your current settings, make sure that the "Keep Settings" checkbox is
+checked. If the file name is correct, make sure to click the "Flash Image" button.
+
+7) Wait a about 1 - 2.5 min. The router will restart itself then the page should refresh, bringing
+you back to the login page. 
+
+
+Final Words
+============================
+
+We would like to thank you for supporting the libreCMC project. If you find any 
+software in this release that is non-free software, please report it to info@librecmc.org. 
+We will review the offending piece of software and devise a workaround or patch. 
+libreCMC aims to always be a 100% libre Free Software project.
+
+
+Happy Hacking,
+
+       Your libreCMC Project
+       http://librecmc.org
+       info@librecmc.org
+
+