Build and install

Sergii edited this page Sep 27, 2018 · 8 revisions

Disclaimer: NEXTSPACE is still in active development. Some steps in this guide may end with error on your setup. You have 2 choices:

  1. Help me to make project better by opening issue.
  2. Wait for release and install everything from tested packages.

Stay tuned, patient and hungry. :)

Available packages

To start acquaintance with project I’ve prepared packages that are not part of NEXTSPACE. They are mandatory to compile NEXTSPACE sources. Here is a brief description of them:

  • llvm and clang 3.8.1 (llvm-libs, llvm, clang-libs, clang) - compiler

Note: CentOS Extras repository contains outdated version of clang - 3.4.2

  • libdispatch - Grand Central Dispatch multithreading library from Apple. Compiled from sources from https://github.com/apple/swift-corelibs-libdispatch some time ago (most probably at 1.3 version).
  • libobjc2 - Objective-C runtime with support of Objective-C 2.0 features (https://github.com/gnustep/libobjc2).
  • nextspace-core - contains system related files configuration files:
    • /etc - Xorg, linker (ld.so.conf.d), user shell profile (profile.d), UDisks2 (polkit and udev), home directory skeleton for newly created user;
    • /Library/Preferences - GNUstep configuration file;
    • /root - additional files for ‘root’ user. Essential for running Login application;
    • /usr/NextSpace - initial NEXTSPACE directory hierarchy with some configuration files.
  • nextspace-core-devel - contains prepared GNUstep Make.
  • nextspace-gnustep (-devel) - contains patched GNUstep libraries. Version of GNUstep components listed in package name. For example, package nextspace-gnustep- 1.24.8 _ 0.24.1 -10.el7.centos.x86_64.rpm contains GNUstep Base 1.24.8, GNUstep GUI and Back 0.24.1.

Install and build

1. Install CentOS 7

  • Start with minimal install. Add EPEL package repository with command:
# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# yum update
  • Install updates
# yum upgrade
  • Install X Window System:
# yum -y groupinstall "X Window System"
  • Disable SELinux. Edit file /etc/sysconfig/selinux and replace line SELINUX=enforcing with SELINUX=disabled.

Other required packages will be installed as dependencies later.

  • If during install of CentOS you’ve set hostname to something that differs from localhost.localdomain, add your hostname into /etc/hosts file. For example, my hostname is nextspace.localdomain. My /etc/hosts file looks like this:
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 nextspace nextspace.localdomain
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6 nextspace nextspace.localdomain

2. Install packages

  1. LLVM and Clang

    # yum install https://github.com/trunkmaster/nextspace/releases/download/0.8/llvm-libs-3.8.1-1.el7.centos.x86_64.rpm

    # yum install https://github.com/trunkmaster/nextspace/releases/download/0.8/llvm-3.8.1-1.el7.centos.x86_64.rpm

    # yum install https://github.com/trunkmaster/nextspace/releases/download/0.8/clang-libs-3.8.1-1.el7.centos.x86_64.rpm

    # yum install https://github.com/trunkmaster/nextspace/releases/download/0.8/clang-3.8.1-1.el7.centos.x86_64.rpm

  2. Grand Central Dispatch

    # yum install https://github.com/trunkmaster/nextspace/releases/download/0.8/libdispatch-1.3-1.el7.centos.x86_64.rpm

    # yum install https://github.com/trunkmaster/nextspace/releases/download/0.8/libdispatch-devel-1.3-1.el7.centos.x86_64.rpm

  3. Objective-C runtime

    # yum install https://github.com/trunkmaster/nextspace/releases/download/0.8/libobjc2-1.8.2-1.el7.centos.x86_64.rpm

    # yum install https://github.com/trunkmaster/nextspace/releases/download/0.8/libobjc2-devel-1.8.2-1.el7.centos.x86_64.rpm

  4. NEXTSPACE Core

    # yum install https://github.com/trunkmaster/nextspace/releases/download/0.8/nextspace-core-0.9-1.el7.centos.x86_64.rpm

    # yum install https://github.com/trunkmaster/nextspace/releases/download/0.8/nextspace-core-devel-0.9-1.el7.centos.x86_64.rpm

  5. NEXTSPACE GNUstep libraries

    Even if you want to install GNUstep libraries with fresh patches (step 3.5) - take this step before 3.5 to install required packages as dependencies.

    # yum install https://github.com/trunkmaster/nextspace/releases/download/0.8/nextspace-gnustep-1.24.8_0.24.1-10.el7.centos.x86_64.rpm

    # yum install https://github.com/trunkmaster/nextspace/releases/download/0.8/nextspace-gnustep-devel-1.24.8_0.24.1-10.el7.centos.x86_64.rpm

3. Build NEXTSPACE

  1. Create user you plan to use NEXTSPACE with.

    # adduser <username>

    # passwd <username>

  2. Install ‘git’ tool:

    # yum install git

  3. Log in as newly created user. And go to the directory where you want to place NEXTSPACE source code tree.
  4. Fetch sources from github:

    $ git clone https://github.com/trunkmaster/nextspace.git

    $ cd nextspace

  5. Take this step if you want GNUstep libraries with fresh patches:

    Install `patch` tool as `root`:

    # yum install patch

    Go to directory with GNUstep sources inside NEXTSPACE cloned repo:

    $ cd Libraries/gnustep

    Install required development packages as `root`:

    # yum install `grep "BuildRequires" nextspace-gnustep.spec | awk -c '{print $2}'`

    Unarchive GNUstep sources, apply patches to gnustep-gui and gnustep-back

    $ tar zxvf gnustep-gui-0.24.1.tar.gz

    $ patch -p0 < gnustep-gui-*.patch

    $ tar zxvf gnustep-back-0.24.1.tar.gz

    $ patch -p0 < gnustep-back-*.patch

    Build and install GNUstep GUI:

    $ cd gnustep-gui-0.24.1

    $ ./configure && make

    $ su -

    # make install

    # exit

    Build and install GNUstep Back:

    $ cd ../gnustep-back-0.24.1

    $ ./configure --enable-server=x11 --enable-graphics=art --with-name=art

    $ make

    $ su -

    # make fonts=no install

    # exit

  6. Install BuildRequires packages listed in ‘nextspace-frameworks.spec’ inside Frameworks subdir:

    # su -

    # cd <directory with nextspace sources/>Frameworks

    # yum install `grep "BuildRequires" nextspace-frameworks.spec | awk -c '{print $2}'`

    # exit

  7. Build and install frameworks

    $ cd Frameworks

    $ make

    $ su -

    # make install

    # ldconfig

  8. Install BuildRequires packages listed in ‘nextspace-desktop.spec’ inside Applications subdir:

    # cd ../Applications

    # yum install `grep "BuildRequires" nextspace-desktop.spec | awk -c '{print $2}'`

    # exit

  9. Build and install applications:

    $ cd ../Applications

    $ make

    $ su -

    # make install

  10. Add login panel service to systemd and start it

    # systemctl enable /usr/NextSpace/Apps/Login.app/Resources/loginwindow.service

    # systemctl start loginwindow

  11. Xorg will be started and you should see Login panel. If not check your Xorg log (you may lack some drivers for your hardware).
  12. If you want to start Login panel on system startup automatically change default systemd target:

    # systemctl set-default graphical.target

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.