diff --git a/.bintray_descriptor.json b/.bintray_descriptor.json index 80a7721b7..eaef71aa3 100644 --- a/.bintray_descriptor.json +++ b/.bintray_descriptor.json @@ -1,11 +1,11 @@ { "package": { "name": "libhermit", - "repo": "hermitcore", - "subject": "rwth-os", + "repo": "ubuntu", + "subject": "hermitcore", "website_url": "http://www.hermitcore.org", "issue_tracker_url": "https://github.com/RWTH-OS/HermitCore/issues", - "vcs_url": "https://github.com/RWTH-OS/HermitCore.git", + "vcs_url": "https://github.com/hermitcore/libhermit.git", "github_release_notes_file": "RELEASE", "licenses": ["Revised BSD"], "public_download_numbers": false, @@ -21,15 +21,13 @@ "files": [ { - "includePattern": "build/(libhermit[^/]*.deb$)", "uploadPattern": "$1", + "includePattern": "../(libhermit[^/]*.deb$)", "uploadPattern": "$1", "matrixParams": { - "deb_distribution": "vivid", + "deb_distribution": "bionic", "deb_component": "main", "deb_architecture": "amd64", "override": 1} - }, - {"includePattern": "build/(libhermit[^/]*.rpm$)", "uploadPattern": "$1", "override": 1}, - {"includePattern": "build/(libhermit[^/]*.tar.bz2$)", "uploadPattern": "$1", "override": 1} + } ], "publish": true } diff --git a/.gitmodules b/.gitmodules index ee284bdb0..e0035903d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,8 +1,8 @@ [submodule "lwip"] path = lwip - url = https://github.com/RWTH-OS/LwIP.git + url = https://github.com/hermitcore/LwIP.git branch = hermit [submodule "usr/libomp"] path = usr/libomp - url = https://github.com/RWTH-OS/libomp_oss.git + url = https://github.com/hermitcore/libomp_oss.git branch = hermit diff --git a/.travis.yml b/.travis.yml index 828a4eac7..764df88e7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,133 +1,31 @@ sudo: required -dist: trusty -language: c - git: + depth: 3 submodules: true - -matrix: - include: - - compiler: gcc - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-4.9 - env: - - COMPILERCXX=g++-4.9 - - COMPILERC=gcc-4.9 - - DEPLOY=true - - compiler: gcc - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-5 - env: - - COMPILERCXX=g++-5 - - COMPILERC=gcc-5 - - compiler: gcc - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-6 - env: - - COMPILERCXX=g++-6 - - COMPILERC=gcc-6 - - compiler: clang - env: - - COMPILERC=clang - - COMPILERCXX=clang++ - - CLANGV=3.8.1 - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-6 - - compiler: clang - env: - - COMPILERC=clang - - COMPILERCXX=clang++ - - CLANGV=3.9.1 - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-6 - - compiler: clang - env: - - COMPILERC=clang - - COMPILERCXX=clang++ - - CLANGV=4.0.1 - - RUNCLANGTIDY=TRUE - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-6 - - +env: + matrix: + - OS_TYPE=ubuntu OS_VERSION=18.04 OS_NAME=bionic +services: +- docker +addons: + apt: + update: true before_install: - - echo "deb https://dl.bintray.com/rwth-os/hermitcore vivid main" | sudo tee -a /etc/apt/sources.list - - travis_retry sudo apt-get -qq update - - travis_retry sudo apt-get install -y curl wget qemu-system-x86 nasm texinfo libmpfr-dev libmpc-dev libgmp-dev libisl-dev flex bison packaging-dev rpm - - travis_retry sudo apt-get install -y --force-yes binutils-hermit libhermit newlib-hermit pthread-embedded-hermit gcc-hermit - - git submodule update --init lwip usr/libomp - # download clang - - mkdir $HOME/clang+llvm - - export PATH=$HOME/clang+llvm/bin:$PATH - - if [ -n "$CLANGV" ]; then wget http://llvm.org/releases/$CLANGV/clang+llvm-$CLANGV-x86_64-linux-gnu-debian8.tar.xz -O $HOME/clang+llvm.tar.xz; fi - - if [ -n "$CLANGV" ]; then tar xf $HOME/clang+llvm.tar.xz -C $HOME/clang+llvm --strip-components 1; fi - +- sudo apt-get -qq update +- sudo docker pull ${OS_TYPE}:${OS_VERSION} script: - - source cmake/local-cmake.sh - - mkdir build - - cd build - - cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=true .. - - CC=$COMPILERC CXX=$COMPILERCXX make -j1 package - - cd $TRAVIS_BUILD_DIR - - if [ -n "$RUNCLANGTIDY" ]; then git ls-files "*.c" |grep tools/ | xargs -P 1 -I{} clang-tidy -p build/tools-prefix/src/tools-build/compile_commands.json -header-filter="^((?\!build).)*$" {}; fi - - if [ -n "$RUNCLANGTIDY" ]; then git ls-files "*.c" |grep arch/x86/loader/ | xargs -P 1 -I{} clang-tidy -p build/arch_x86_loader-prefix/src/arch_x86_loader-build/compile_commands.json -header-filter="^((?\!build).)*$" {}; fi - - ./tests.sh - - rm -rf FILE_ID.DIZ Makefile netio* getopt* bin - - ls -la - - ls -la build - -notifications: - slack: hermitcore:UtcfeEXkbpx3WyIDK2Wm2beS - +- docker run -ti -v ${TRAVIS_BUILD_DIR}:/work:rw ${OS_TYPE}:${OS_VERSION} /bin/bash + -c "cd /work; ./tests.sh ${OS_TYPE} ${OS_NAME}" +before_deploy: +- cd ${TRAVIS_BUILD_DIR} +- dpkg-deb -b tmp libhermit_0.2.8-1_amd64.deb deploy: + provider: bintray on: branch: master - condition: $DEPLOY = true - provider: bintray - file: .bintray_descriptor.json skip_cleanup: true + file: ".bintray_descriptor.json" user: - secure: wo0yLY7xhGZYDqdB05UE+IOXXgYhAwj+zvtZh3ET2253hy35y74cDKMBNGfynH0aauPk8EFmN/LJoYaV/T9QF6pc1bilbqSg1/LJuL7hjAVVFaBSjwlE/Wbbb+EHNX5CR3qmC42SUvbrU+0WNvRu7WJBpZIoH9EtPv2Cj7uRV9+7Mtp/O3Ykl3E5LgkF5iA6Lo03TN+bZ1Vog5MbuJagDTpNa18vJ3jVYaed5gqOkghYYDpc5U9yxN3debS7/8MCl3u9V9uanMAyjc6wtbvJLotVkUwdXK8u9FohuWQ4pTEQ/QspLDDBuxaS3kLNWtzBMNQn6rcYIOWWKyD3uqvIhqjcErX7WChf3oGS1XPFfTHebNrHyV4KGvzkMAJUR/1qC5f4nZCsvgPv/35d702nky3Di2/WZsjD5zUR9g3+vPO8mnM3z8eA6ShVJcxezZ73Co3p0ZnBaF3J438bAKiT4nlrbIVpRzZzo/5nYTx//SefXSAmYCILr/y7xTYBqjfjMQHQZEMZSvJYRPbtP7eVCfWGEa2tG4rQndegUtwS+n1r8atcESL9eeUUM6sa1QzZYDYVseOc9GWcB7SIJzPOm8QTuTlkISHMGJ8FY+KHorP15VkVlr0EZ5c7KY0cBIbWoZGNQTg9+nSgChyf7ElNbAxPiCZsR0zafjMDhfcnzco= + secure: kiTa03QyprxZfL8QuWCLuMnWUpMAhOlmwpHP2BdYsBTNEXS4vfNbOLZSUUWRi29tg1/zdXbIexoUXEmt/ZpDiM0W0kpZrcxvt/bi181RUVei9eoim+GL4jtJ5R7JKBIJuDXbCZiDQTs/oaiIv1EFkMKQeHl6GIiLIl3ehnqNyvpJvJC713uW6PTbxUjz20pfhFiq7B73j/onLVTC1m19L9lFnsryxatDN7zny/qZHmyel3ggDbPokv7jZwSYNs/X6yyOF1RQZ2qqIML0YLtkLqdrCqviSD/8p7OdNN34ACf6I+D5GIzZd1arlrOO2RsB+mIlDxoOiCNtwPbCVs3ReY9DOlNBxs/fABEyVyEWX20VboiLbWbhCok6V4Uk95BCHBbp6ceP06NhQ9gFbqFJwQe6NG/XlQbrKBp7Yj3+GovcNDjWVcHYpSuc4a7+1unM3tfPMFREgloTX0xg017H1eiRiR2viJsMuCmtCXteZ8H9qTx1l8Kf+cXKtg/h+XIkzDbIwhlO/jE3Bss7LSDNghYUBo2meEEJgibbFCuNQCFoA5doYCOMz4rO1YT3uI2fBLisAIqys+e3zGfmHARejjMASjdwT5vZzDNeeiTE8/2zG5X7Ow697TI+HtnFE+/hCZ4RAmu+vz6/IZYYO/Mf7kIAs8WGfcAkuCPzYXBoA10= key: - secure: JfsqEUO3Z60yGfuK5RSzwMoWZtaYflZtW7QE6R1DVMPEQ+CytzEdV2JaTpY14xz4yz1YpBBuQ0P3Q3e2rf/ORp8N8j7/5m3gfiDi8bRH3gX10r6vCQaUBilj0pz3amWUacxwBUEYR/f1029OnJ1qug30f4ARk7DWyuAePt0OboDXZ3j4JOi8xfXKTzofyKGugU4EuzhmKAbpHaBoX97g8z+gETC+wsBEYio8iD2h0ZOe/qZ0S+JGYkphIKcxpQazKdi3YrmWm0BUZsQRtkgoH7KUZm8vqfOUyVOrK+UGOTz4vXqCWHZ+wG1QRrGPUv8ehLrB26y2o02mmaDWQhM+I3RtllL06JDvDw40xjRImYtzg6xr7Mvl0OTQHprXrkN8gw2IbIivV8v31O46Ov+KIaN3CCx1IncnllBWjEXAIs4zPtvNj2Ad338JTkI/opHmPG0DI0DKE36r8wPZYTs/pHVpc3xEzwKYDklJkICjMLUakUGKppS7eKzKGRMjWvbT0vM/U7hHUcz0lA+BUoXedNmJQ1wBT85Ud8uobuKS4C8QmlgIuF1PI2+6LJr5LsCGZRvg7Pl1SPc3ZQLPHX4ggoLAnZZJiV/0ZPCn7XCLiUS1qws37l0uZT1zJQMFLsw9MGuP58tpT7WDuYYAwma/pL+OKC/JKoDhuJwM1I7wB4s= - -after_deploy: - - docker login -u $DOCKER_USER -p $DOCKER_PASS - - export REPO=rwthos/hermitcore - - export TAG=`if [ "$TRAVIS_BRANCH" == "master" ]; then echo "latest"; else echo $TRAVIS_BRANCH ; fi` - - cd docker - - docker build -f Dockerfile -t $REPO:$COMMIT . - - docker tag $REPO:$COMMIT $REPO:$TAG - - docker tag $REPO:$COMMIT $REPO:travis-$TRAVIS_BUILD_NUMBER - - docker push $REPO - - cd - - -env: - global: - - COMMIT=${TRAVIS_COMMIT::8} - - secure: GDWIzwLeCd12zT9cM0dEBBAVE345oT2ECQiaUTj6zIEhncKxDD2yE56eMpj0X9UCCjKLzTmJ4j8vD/cwB96Z43k+yiLHV+sa3pGnE8JAbgmbbbLTmSuyQQcCR4GQ4nzK48ylOygwmilBpUAH+Vw0jIFspeUD1j8KtKosXWBNPmWhwXDXWh1ae1fDYXxycaVAiUQrufNBs2dMSYrL0Dqsvj3HVla37dkzior2DM3kuWoE9kU61tLbBcwJn3GTMXdy10tIGLZzS+ZDU+ETbKadAlOZ58DsK3wLlgSloRJqBCzpJfCXpS7tU5kHIPyfAXgB5rBtWfyiSx6je171XEuxONl48BRyOI1O0Dqc8UiJ+W6eyqUyGoEPJ6r6r1oAbvcr4Ebf+sRtfj4PjnopIGzIrPNc1uebCgKpD2nQIO9P4XnwH/EbOU4My+kr5JPL8O0x4kottQeWr9v5nuhfBgknZpMIvncip9N9eek4aSMzfkAymmf7HBcPTMhb/v6xlwluqKsDE+c4WDQ2NhivpsDpqDZujhDh75MMFq7TlLRHlHNr64P7pz0A0xC2TJK9mC9u+WrwdpIFEsyDIiSSiOJ8GGgr5NK+dnXKZBy3b4/pk/TJciItk1W37RYiP1H4sVa+37VZ3VMUAwPVb1vgPG1r1XND/asjR/zzT374O/l0vNM= - - secure: TZy4F5ZdcUu5iaSaxNRK6qGzW20GMVI8E6Ol7lZnb5qXzGyZHZCYdT6eW5rLTsKvMriSrO9++GHx5iSSaG23Y9WiMWC4rpKzuax9vVB/1EbbBu1i6I+GaO5agR+isf6PPlPBVvn84Lzky1O2kLtdgSUmu5cJZnbSRfG8utWemNmPgBQ4wgRtujz5xLdgv98NYsCCLR13cwWE3Cd3uZb4vEF1qkjgwn9XKbemWCB3mlI2ZgTdAPl8cv/T+PP2Pou7B7E5qOBcVb/GA3uXtgX0Y7bJxLeCetCkP39hmRZ0idr6BnSrSYwgCnbmf8LNTYaz0mKLwRxMu6wHkvYcvPjaGfawHB/6NJvDtjjIzohnTe3V15VktUKPnfiLV60NKjCYyiPIOKwsviFeC+H2NHSr0LWXKjoolzxiaOy4CrcsizwGBF8dcDYjPf6wdt2+7DUDXJtAscaa/eCCSxkG9Ls7FZIuLiQKFzTAAimtkGyIFcvtWvtP/6axcxVyP+0AJeFsgAt6hUfYBeHzlO/6yAM24YaVOjqPfTE9EebJtey0C7u7kruuqefywr5YqSfSrKcel+8wZNVIJTLPHrp+KpNqkfXt65uzC2q08z34c8kkKYWRA5nMVj4OLlecAtyvhpW0WOlWaeMBlJ1FRaJ/+U/PFUI2BjDHG3rIKqepA749huc= + secure: fg8+5owyDFPt3H/+Xk8jGHtEBasz1C2K0i+z92f/JnjTyLCrrKn+6DX7VRgcEl4ketTWLex7JduJLl4/7Ftug8qN0NuMwx0OxDCrwzvkoVwbl2DYX8von9ceuuV57p4e+uG35bPjU7E1KblkL+7ERqn9hsp5NbVdb4ueoSl9LedDdfzwcz8iA8JmzpbJ5RwQqg4kmdvuRVEUZMbQeHq4KB3kTznsma3BUeApVSaRQ8BpSaHED0tzFWKUTdjq7GvjBMF6WNpVIsc7Usky78UUyjaGbfMyT/7i9RctC3rAXr2XZryxDrJstAnHo6trqraf/3E40a7r0LhF9y7HWdmlfG99qhT3Vii3/pHeRIDp5O6xpIF8o/QkbYaFTwcvefRCjRQ8YYREqYvYnXOsKge/VaoUx48pTn6fOPzEzvlbyTkJ6Wp7knhx4qzR5JB8yTbIjoozggrkayvkYVfdMZjXvY/2T8TcNbPG0+0+EVkUcNrNMy9ksAH4RgR+eVQ4oI/sg5ldnVpp74jhSSDgAHBKCZQ01tIYMMEIyZm7qhAAdXnjCeV6D78a8/brUN+TSRNGYILx4vTiY3GMLEHsDGH4VEGawef0CtQasBrt5Cc0a/3KDNwuBy8rlbxLxbv+JCCn9vMm+UYQ6sTexsih76V07OHmQliu0xjQgBG5maFaV74= diff --git a/README.md b/README.md index e3cee52b1..6834301aa 100644 --- a/README.md +++ b/README.md @@ -47,13 +47,13 @@ the HermitCore kernel and applications you need: ### HermitCore cross-toolchain -We provide prebuilt packages (currently Debian-based only) of the HermitCore +We provide prebuilt packages (currently Ubuntu 18.04 only) of the HermitCore toolchain, which can be installed as follows: ```bash -$ echo "deb [trusted=yes] https://dl.bintray.com/rwth-os/hermitcore vivid main" | sudo tee -a /etc/apt/sources.list +$ echo "deb [trusted=yes] https://dl.bintray.com/hermitcore/ubuntu bionic main" | sudo tee -a /etc/apt/sources.list $ sudo apt-get -qq update -$ sudo apt-get install binutils-hermit newlib-hermit pthread-embedded-hermit gcc-hermit libhermit +$ sudo apt-get install binutils-hermit newlib-hermit pte-hermit gcc-hermit libhermit ``` For non-Debian based systems, a docker image with the complete toolchain is provided and can be installed as follows: diff --git a/docker/Dockerfile b/docker/Dockerfile index d806ffabf..b06e645b9 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -14,9 +14,18 @@ RUN echo "deb https://dl.bintray.com/rwth-os/hermitcore vivid main" | tee -a /et RUN apt-get -qq update # Install required packets from ubuntu repository -RUN apt-get install -y curl wget vim nano git binutils autoconf automake make cmake qemu-system-x86 nasm gcc +RUN apt-get install -y curl cmake bsdmainutils wget vim nano git binutils autoconf automake make cmake qemu-system-x86 nasm gcc RUN apt-get install -y --allow-unauthenticated binutils-hermit libhermit newlib-hermit pthread-embedded-hermit gcc-hermit +RUN wget https://cmake.org/files/v3.7/cmake-3.7.2.tar.gz +RUN tar xzvf cmake*.tar.gz +RUN cd cmake-3.7.2 +RUN ./bootstrap +RUN make +RUN make install +RUN cd .. +RUN rm -rf cmake* + ENV PATH="/opt/hermit/bin:${PATH}" ENV EDITOR=vim diff --git a/tests.sh b/tests.sh index ce6c535c8..5b405e82d 100755 --- a/tests.sh +++ b/tests.sh @@ -1,35 +1,53 @@ #!/bin/bash -# -# do not use this script -# it is written only for internal tests via Travis CI -TDIR=build/local_prefix/opt/hermit/x86_64-hermit/extra -FILES="$TDIR/tests/hello $TDIR/tests/hellof $TDIR/tests/hello++ $TDIR/tests/thr_hello $TDIR/tests/pi $TDIR/benchmarks/stream $TDIR/benchmarks/basic $TDIR/tests/signals $TDIR/tests/test-malloc $TDIR/tests/test-malloc-mt $TDIR/tests/argv_envp" -PROXY=build/local_prefix/opt/hermit/bin/proxy +OS_NAME=$1 +OS_VERSION=$2 -for f in $FILES; do echo "check $f..."; HERMIT_ISLE=qemu HERMIT_CPUS=1 HERMIT_KVM=0 HERMIT_VERBOSE=1 timeout --kill-after=5m 5m $PROXY $f || exit 1; done +if [ "$OS_NAME" = "centos" ]; then -for f in $FILES; do echo "check $f..."; HERMIT_ISLE=qemu HERMIT_CPUS=2 HERMIT_KVM=0 HERMIT_VERBOSE=1 timeout --kill-after=5m 5m $PROXY $f || exit 1; done +# Clean the yum cache +yum -y clean all +yum -y clean expire-cache -# test echo server at port 8000 -HERMIT_ISLE=qemu HERMIT_CPUS=1 HERMIT_KVM=0 HERMIT_VERBOSE=1 HERMIT_APP_PORT=8000 $PROXY $TDIR/tests/server & -sleep 10 -curl http://127.0.0.1:8000/help -sleep 1 -curl http://127.0.0.1:8000/hello -sleep 1 +# First, install all the needed packages. +yum install -y wget gettext flex bison binutils gcc gcc-c++ texinfo kernel-headers rpm-build kernel-devel boost-devel cmake git tar gzip make autotools -# kill server -kill $! +wget http://checkinstall.izto.org/files/source/checkinstall-1.6.2.tar.gz +tar xzvf checkinstall-1.6.2.tar.gz +cd checkinstall-1.6.2 +./configure +make +make install +cd .. +rm -rf checkinstall* -# test connection via netio -wget http://web.ars.de/wp-content/uploads/2017/04/netio132.zip -unzip netio132.zip -HERMIT_ISLE=qemu HERMIT_CPUS=2 HERMIT_KVM=0 HERMIT_VERBOSE=1 HERMIT_APP_PORT=18767 $PROXY $TDIR/benchmarks/netio & -sleep 1 -chmod a+rx bin/linux-x86_64 -bin/linux-x86_64 -t -b 4k localhost -sleep 1 +mkdir -p build +cd build +../configure --target=x86_64-hermit --prefix=/opt/hermit --disable-shared --disable-nls --disable-gdb --disable-libdecnumber --disable-readline --disable-sim --disable-libssp --enable-tls --disable-multilib +make +checkinstall -R -y --exclude=build --pkggroup=main --maintainer=stefan@eonerc.rwth-aachen.de --pkgsource=https://hermitcore.org --pkgname=newlib-hermit --pkgversion=2.30.51 --pkglicense=GPL2 make install -# kill server -kill $! +else + +export DEBIAN_FRONTEND="noninteractive" + +apt-get -qq update +apt-get install -y cmake wget curl gnupg checkinstall gawk dialog apt-utils flex bison binutils texinfo gcc g++ libmpfr-dev libmpc-dev libgmp-dev libisl-dev packaging-dev build-essential libtool autotools-dev autoconf pkg-config apt-transport-https nasm + +echo "deb [trusted=yes] https://dl.bintray.com/hermitcore/ubuntu bionic main" | tee -a /etc/apt/sources.list +apt-get update +apt-get install -y --allow-unauthenticated binutils-hermit newlib-hermit pte-hermit gcc-hermit #gcc-hermit-bootstrap +export PATH=/opt/hermit/bin:$PATH + +mkdir -p build +cd build +cmake -DTOOLCHAIN_BIN_DIR=/opt/hermit/bin -DCMAKE_INSTALL_PREFIX=/opt/hermit .. #-DBOOTSTRAP=true .. +make hermit-bootstrap +checkinstall -D -y --exclude=build --pkggroup=main --maintainer=stefan@eonerc.rwth-aachen.de --pkgsource=https://hermitcore.org --pkgname=libhermit --pkgversion=0.2.8 --pkglicense=BSD-2-Clause make hermit-bootstrap-install + +cd .. +mkdir -p tmp +dpkg-deb -R build/libhermit_0.2.8-1_amd64.deb tmp +rm -f build/libhermit_0.2.8-1_amd64.deb + +fi