I maintain a script (ready-for.sh) which checks requirements for various 
courses I teach which makes sure you have the right computer, RAM, disk space 
available, and such in order to do the class. It also makes sure that the 
required packages for your $DISTRO are installed (supported distros are CentOS, 
Debian, Fedora, Mint, openSUSE, RHEL, SLES, Ubuntu, with some initial support 
for ArchLinux). It has a full test suite to make sure the package lists are 
valid and available for each of the distro. It also can output a JSON version 
of the requirements (if you want to extract requirements for something else 
like a webpage or document) and includes an auto-updater. Its designed to make 
getting ready for a specific course very easy for a new person. I also use it 
to debug setup issues on people’s computers over the phone or email.

One of the courses I maintain requirements for is the LF Yocto Project course. 
And recently I rebuilt the script into something more generic 
(check-requirements.sh) which specifically allows you to check for requirements 
for the various groupings of packages in the Yocto Project documentation.

I’ve made it initially available as an alpha release via 
https://cm.converseincode.com/cr/ <https://cm.converseincode.com/cr/> , and I 
plan to maintain it along with the script described above since they share so 
much of the same code.

The idea is that users would download and run this script once in order to make 
sure their machines are ready to build OE or Poky or whatever, instead of 
reading the setup document and manually installing all the packages. One would 
still have to clone the appropriate git repo to get a copy of OE or Poky after 
that.

As an example, here it is being run on an Ubuntu-16.04 machine which is missing 
packages for building the documentation. (Showing the YP requirements are 
boring, because this computer already meets those requirements because I build 
OE all the time). It is to be run as a normal user, but uses sudo internally 
when it needs to run privileged commands. In fact if you try to run it as root, 
it complains.

$ sudo ./check-requirements.sh 
[sudo] password for behanw: 
FAIL: Please don't run as root
NOTE: Sudo will be used internally by this script as required.

$ ./check-requirements.sh --list
Available (4) options:
  YPDOC - Requirements for Yocto Project Documentation
  YPGUI - Requirements for Yocto Project GUI
  YP - Requirements for Yocto Project
  YPST - Requirements for OpenEmbedded Self-Test

$ ./check-requirements.sh YPDOC
Checking that this computer is suitable for YPDOC: Requirements for Yocto 
Project Documentation
--------------------------------------------------------------------------------
PASS: CPU architecture is x86_64
PASS: 4 core CPU (good enough but 8 is preferred)
PASS: Your CPU appears powerful enough (currently at 23228 BogoMIPS 
cumulatively)
PASS: 6 GiB RAM
PASS: 158 GiB free disk space in /home/behanw
PASS: Linux distribution architecture is x86_64
PASS: Linux distribution is Ubuntu:amd64-16.04 (xenial)
PASS: Internet is available (which is required in this case)
--------------------------------------------------------------------------------
WARN: Some packages are missing
NOTE: Need to install: dblatex docbook-dsssl docbook-utils fop jadetex 
java-wrappers libavalon-framework-java libbatik-java libbsf-java 
libfontbox-java libfop-java libosp5 libostyle1c2 libsgmls-perl libsp1c2 
libxmlgraphics-commons-java openjade sgmlspl sp texlive-bibtex-extra 
texlive-math-extra xmlto
You can install missing packages by running:
  ./check-requirements.sh --install YPDOC
or by:
  sudo apt-get --no-install-recommends install dblatex docbook-dsssl 
docbook-utils fop jadetex java-wrappers libavalon-framework-java libbatik-java 
libbsf-java libfontbox-java libfop-java libosp5 libostyle1c2 libsgmls-perl 
libsp1c2 libxmlgraphics-commons-java openjade sgmlspl sp texlive-bibtex-extra 
texlive-math-extra xmlto
--------------------------------------------------------------------------------
WARN: Your computer doesn't meet the stated requirements unless you can fix the 
above warnings.
WARN: You also have some missing packages.

$ ./check-requirements.sh --install YPDOC
Checking that this computer is suitable for YPDOC: Requirements for Yocto 
Project Documentation
--------------------------------------------------------------------------------
<snip>
--------------------------------------------------------------------------------
WARN: Some packages are missing
WARN: About to install: dblatex docbook-dsssl docbook-utils fop jadetex 
java-wrappers libavalon-framework-java libbatik-java libbsf-java 
libfontbox-java libfop-java libosp5 libostyle1c2 libsgmls-perl libsp1c2 
libxmlgraphics-commons-java openjade sgmlspl sp texlive-bibtex-extra 
texlive-math-extra xmlto 
Is that okay? [y/N] 

Is this useful? Thoughts? Suggestions?

Give it a try and let me know what you think. It’s extensible, so adding other 
groupings of packages and such, or adding aliases for OE or something is all 
trivially done.

Thanks,

Behan
-- 
_______________________________________________
Openembedded-devel mailing list
Openembedded-devel@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-devel

Reply via email to