Scheduled Maintenance: We are aware of an issue with Google, AOL, and Yahoo services as email providers which are blocking new registrations. We are trying to fix the issue and we have several internal and external support tickets in process to resolve the issue. Please see: viewtopic.php?t=158230

 

 

 

Solved Cell Ph Clockworkmod Tether Not Compiling Debian9

Ask for help with issues regarding the Installations of the Debian O/S.
Post Reply
Message
Author
KSR-33-VIP
Posts: 15
Joined: 2016-12-04 06:30

Solved Cell Ph Clockworkmod Tether Not Compiling Debian9

#1 Post by KSR-33-VIP »

1. Clockworkmod Tether
This app connects laptop to cell phone for internet.
Cell phone can connect to internet by either:
-mobile data
-wifi router
http://www.clockworkmod.com

2. Install Clockworkmod Tether App on cell phone

Code: Select all

http://download.clockworkmod.com/tether/Tether.apk
install Tether.apk on Android cell phone
connect cell phone to internet
on cell phone start clockworkmod Tether.apk
tap ? icon
select download  (this download is later copied to the laptop from the cell phone)
now downloading 
when finished tap OK
downloaded to cell phone --> sdcard/clockworkmod/tether/tether-linux.tgz

power off/on cell phone
power off/on laptop
on laptop --> mkdir ClockworkModTether
copy tether-linux.tgz from cell phone to laptop
exit su(super user)  (so that tar(unzip) does not make owner root)
tar zxf tether-linux.tgz
su  
tar copies files to /ClockworkModTether/Tether/
now this requires compiling before running
3. Install Debian 9
This procedure was done after a new Debian 9 install
A new Debian 9 install does not install gcc-6 and g++-6. gcc-6 is the default Debian 9 Stretch C compiler on the install dvd (Synaptic Package Manger)
Clockworkmod Tether does not compile with the Debian 9 Stretch C compiler --> gcc-6 and g++-6
Clockworkmod Tether compiles OK with the Debian 8 Jessie C compiler --> gcc-4.9 and g++-4.9
This procedure installs gcc-4.9 and g++-4.9 into Debian 9 Stretch

4. List Debian version
cat /etc/debian_version
9.4

cat /etc/os-release
Debian GNU/Linux 9 (stretch)

5. Install C compiler, setup sources.list for apt-get internet download
gedit --> /etc/apt/sources.list (nautilus, other locations, open with gedit)
save as /Desktop/sources.list
add the following 2 lines to the end
deb http://ftp.us.debian.org/debian/ jessie main contrib non-free
deb-src http://ftp.us.debian.org/debian/ jessie main contrib non-free

cp /Desktop/sources.list /etc/apt/sources.list

sources.list

Code: Select all

# /etc/apt/sources/list

# deb cdrom:[Debian GNU/Linux 9.4.0 _Stretch_ - Official i386 DVD Binary-1 20180310-11:55]/ stretch contrib main

deb cdrom:[Debian GNU/Linux 9.4.0 _Stretch_ - Official i386 DVD Binary-1 20180310-11:55]/ stretch contrib main

# Line commented out by installer because it failed to verify:
#deb http://security.debian.org/debian-security stretch/updates main contrib
# Line commented out by installer because it failed to verify:
#deb-src http://security.debian.org/debian-security stretch/updates main contrib

# stretch-updates, previously known as 'volatile'
# A network mirror was not selected during install.  The following entries
# are provided as examples, but you should amend them as appropriate
# for your mirror of choice.
#
# deb http://deb.debian.org/debian/ stretch-updates main contrib
# deb-src http://deb.debian.org/debian/ stretch-updates main contrib

# Debian 8 Jessie
deb http://ftp.us.debian.org/debian/ jessie main contrib non-free
deb-src http://ftp.us.debian.org/debian/ jessie main contrib non-free
apt-get update

apt-get install gcc-4.9

Code: Select all

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  binutils cpp-4.9 gcc-4.9-base libasan1 libc-dev-bin libc6-dev libcilkrts5 libcloog-isl4 libgcc-4.9-dev libisl10 libitm1 libubsan0 linux-libc-dev manpages-dev
Suggested packages:
  binutils-doc gcc-4.9-locales gcc-4.9-multilib gcc-4.9-doc libgcc1-dbg libgomp1-dbg libitm1-dbg libatomic1-dbg libasan1-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg
  libcilkrts5-dbg libquadmath0-dbg glibc-doc
The following NEW packages will be installed:
  binutils cpp-4.9 gcc-4.9 gcc-4.9-base libasan1 libc-dev-bin libc6-dev libcilkrts5 libcloog-isl4 libgcc-4.9-dev libisl10 libitm1 libubsan0 linux-libc-dev manpages-dev
0 upgraded, 15 newly installed, 0 to remove and 3 not upgraded.
Need to get 13.6 MB/25.9 MB of archives.
After this operation, 106 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://ftp.us.debian.org/debian jessie/main i386 gcc-4.9-base i386 4.9.2-10+deb8u1 [160 kB]
Get:2 http://ftp.us.debian.org/debian jessie/main i386 libasan1 i386 4.9.2-10+deb8u1 [192 kB]
Get:3 http://ftp.us.debian.org/debian jessie/main i386 libisl10 i386 0.12.2-2 [496 kB]
Get:4 http://ftp.us.debian.org/debian jessie/main i386 cpp-4.9 i386 4.9.2-10+deb8u1 [5,162 kB]
Media change: please insert the disc labeled
 'Debian GNU/Linux 9.4.0 _Stretch_ - Official i386 DVD Binary-1 20180310-11:55'
in the drive '/media/cdrom/' and press [Enter]

Get:5 http://ftp.us.debian.org/debian jessie/main i386 libgcc-4.9-dev i386 4.9.2-10+deb8u1 [2,058 kB]                                                                          
Get:6 http://ftp.us.debian.org/debian jessie/main i386 gcc-4.9 i386 4.9.2-10+deb8u1 [5,487 kB]                                                                                 
Media change: please insert the disc labeled                                                                                                                                   
 'Debian GNU/Linux 9.4.0 _Stretch_ - Official i386 DVD Binary-1 20180310-11:55'
in the drive '/media/cdrom/' and press [Enter]

Get:7 cdrom://[Debian GNU/Linux 9.4.0 _Stretch_ - Official i386 DVD Binary-1 20180310-11:55] stretch/main i386 binutils i386 2.28-5 [3,967 kB]                                 
Get:8 cdrom://[Debian GNU/Linux 9.4.0 _Stretch_ - Official i386 DVD Binary-1 20180310-11:55] stretch/main i386 libcloog-isl4 i386 0.18.4-1+b1 [70.4 kB]                        
Get:9 cdrom://[Debian GNU/Linux 9.4.0 _Stretch_ - Official i386 DVD Binary-1 20180310-11:55] stretch/main i386 libitm1 i386 6.3.0-18+deb9u1 [30.3 kB]                          
Get:10 cdrom://[Debian GNU/Linux 9.4.0 _Stretch_ - Official i386 DVD Binary-1 20180310-11:55] stretch/main i386 libubsan0 i386 6.3.0-18+deb9u1 [119 kB]                        
Get:11 cdrom://[Debian GNU/Linux 9.4.0 _Stretch_ - Official i386 DVD Binary-1 20180310-11:55] stretch/main i386 libcilkrts5 i386 6.3.0-18+deb9u1 [45.1 kB]                     
Get:12 cdrom://[Debian GNU/Linux 9.4.0 _Stretch_ - Official i386 DVD Binary-1 20180310-11:55] stretch/main i386 libc-dev-bin i386 2.24-11+deb9u3 [259 kB]                      
Get:13 cdrom://[Debian GNU/Linux 9.4.0 _Stretch_ - Official i386 DVD Binary-1 20180310-11:55] stretch/main i386 linux-libc-dev i386 4.9.82-1+deb9u3 [1,320 kB]                 
Get:14 cdrom://[Debian GNU/Linux 9.4.0 _Stretch_ - Official i386 DVD Binary-1 20180310-11:55] stretch/main i386 libc6-dev i386 2.24-11+deb9u3 [4,366 kB]                       
Get:15 cdrom://[Debian GNU/Linux 9.4.0 _Stretch_ - Official i386 DVD Binary-1 20180310-11:55] stretch/main i386 manpages-dev all 4.10-2 [2,145 kB]                             
Fetched 13.6 MB in 1min 21s (165 kB/s)                                                                                                                                         
Selecting previously unselected package gcc-4.9-base:i386.
(Reading database ... 129570 files and directories currently installed.)
Preparing to unpack .../00-gcc-4.9-base_4.9.2-10+deb8u1_i386.deb ...
Unpacking gcc-4.9-base:i386 (4.9.2-10+deb8u1) ...
Selecting previously unselected package libasan1:i386.
Preparing to unpack .../01-libasan1_4.9.2-10+deb8u1_i386.deb ...
Unpacking libasan1:i386 (4.9.2-10+deb8u1) ...
Selecting previously unselected package libisl10:i386.
Preparing to unpack .../02-libisl10_0.12.2-2_i386.deb ...
Unpacking libisl10:i386 (0.12.2-2) ...
Selecting previously unselected package binutils.
Preparing to unpack .../03-binutils_2.28-5_i386.deb ...
Unpacking binutils (2.28-5) ...
Selecting previously unselected package libcloog-isl4:i386.
Preparing to unpack .../04-libcloog-isl4_0.18.4-1+b1_i386.deb ...
Unpacking libcloog-isl4:i386 (0.18.4-1+b1) ...
Selecting previously unselected package cpp-4.9.
Preparing to unpack .../05-cpp-4.9_4.9.2-10+deb8u1_i386.deb ...
Unpacking cpp-4.9 (4.9.2-10+deb8u1) ...
Selecting previously unselected package libitm1:i386.
Preparing to unpack .../06-libitm1_6.3.0-18+deb9u1_i386.deb ...
Unpacking libitm1:i386 (6.3.0-18+deb9u1) ...
Selecting previously unselected package libubsan0:i386.
Preparing to unpack .../07-libubsan0_6.3.0-18+deb9u1_i386.deb ...
Unpacking libubsan0:i386 (6.3.0-18+deb9u1) ...
Selecting previously unselected package libcilkrts5:i386.
Preparing to unpack .../08-libcilkrts5_6.3.0-18+deb9u1_i386.deb ...
Unpacking libcilkrts5:i386 (6.3.0-18+deb9u1) ...
Selecting previously unselected package libgcc-4.9-dev:i386.
Preparing to unpack .../09-libgcc-4.9-dev_4.9.2-10+deb8u1_i386.deb ...
Unpacking libgcc-4.9-dev:i386 (4.9.2-10+deb8u1) ...
Selecting previously unselected package gcc-4.9.
Preparing to unpack .../10-gcc-4.9_4.9.2-10+deb8u1_i386.deb ...
Unpacking gcc-4.9 (4.9.2-10+deb8u1) ...
Selecting previously unselected package libc-dev-bin.
Preparing to unpack .../11-libc-dev-bin_2.24-11+deb9u3_i386.deb ...
Unpacking libc-dev-bin (2.24-11+deb9u3) ...
Selecting previously unselected package linux-libc-dev:i386.
Preparing to unpack .../12-linux-libc-dev_4.9.82-1+deb9u3_i386.deb ...
Unpacking linux-libc-dev:i386 (4.9.82-1+deb9u3) ...
Selecting previously unselected package libc6-dev:i386.
Preparing to unpack .../13-libc6-dev_2.24-11+deb9u3_i386.deb ...
Unpacking libc6-dev:i386 (2.24-11+deb9u3) ...
Selecting previously unselected package manpages-dev.
Preparing to unpack .../14-manpages-dev_4.10-2_all.deb ...
Unpacking manpages-dev (4.10-2) ...
Setting up libcilkrts5:i386 (6.3.0-18+deb9u1) ...
Setting up libubsan0:i386 (6.3.0-18+deb9u1) ...
Setting up linux-libc-dev:i386 (4.9.82-1+deb9u3) ...
Processing triggers for libc-bin (2.24-11+deb9u3) ...
Setting up libisl10:i386 (0.12.2-2) ...
Setting up libcloog-isl4:i386 (0.18.4-1+b1) ...
Processing triggers for man-db (2.7.6.1-2) ...
Setting up gcc-4.9-base:i386 (4.9.2-10+deb8u1) ...
Setting up binutils (2.28-5) ...
Setting up libc-dev-bin (2.24-11+deb9u3) ...
Setting up manpages-dev (4.10-2) ...
Setting up libc6-dev:i386 (2.24-11+deb9u3) ...
Setting up libitm1:i386 (6.3.0-18+deb9u1) ...
Setting up cpp-4.9 (4.9.2-10+deb8u1) ...
Setting up libasan1:i386 (4.9.2-10+deb8u1) ...
Setting up libgcc-4.9-dev:i386 (4.9.2-10+deb8u1) ...
Setting up gcc-4.9 (4.9.2-10+deb8u1) ...
Processing triggers for libc-bin (2.24-11+deb9u3) ...
apt-get install g++-4.9

Code: Select all

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libstdc++-4.9-dev
Suggested packages:
  g++-4.9-multilib gcc-4.9-doc libstdc++6-4.9-dbg libstdc++-4.9-doc
The following NEW packages will be installed:
  g++-4.9 libstdc++-4.9-dev
0 upgraded, 2 newly installed, 0 to remove and 3 not upgraded.
Need to get 19.1 MB of archives.
After this operation, 41.9 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://ftp.us.debian.org/debian jessie/main i386 libstdc++-4.9-dev i386 4.9.2-10+deb8u1 [1,124 kB]
Get:2 http://ftp.us.debian.org/debian jessie/main i386 g++-4.9 i386 4.9.2-10+deb8u1 [18.0 MB]
Fetched 19.1 MB in 29s (640 kB/s)                                                                                                                                              
Selecting previously unselected package libstdc++-4.9-dev:i386.
(Reading database ... 133527 files and directories currently installed.)
Preparing to unpack .../libstdc++-4.9-dev_4.9.2-10+deb8u1_i386.deb ...
Unpacking libstdc++-4.9-dev:i386 (4.9.2-10+deb8u1) ...
Selecting previously unselected package g++-4.9.
Preparing to unpack .../g++-4.9_4.9.2-10+deb8u1_i386.deb ...
Unpacking g++-4.9 (4.9.2-10+deb8u1) ...
Setting up libstdc++-4.9-dev:i386 (4.9.2-10+deb8u1) ...
Setting up g++-4.9 (4.9.2-10+deb8u1) ...
apt-get install cpp-4.9

Code: Select all

Reading package lists... Done
Building dependency tree       
Reading state information... Done
cpp-4.9 is already the newest version (4.9.2-10+deb8u1).
cpp-4.9 set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
dpkg --configure -a
check install configuration, nothing listed therefore everything OK


6. Edit configure file
cd /ClockworkModTether/Tether/node/
gedit configure

after the line
CC = os.environ.get('CC', 'cc')

add the following lines
CC = "/usr/bin/gcc-4.9"
cc = "/usr/bin/gcc-4.9"
gcc = "/usr/bin/gcc-4.9"
CXX = "/usr/bin/g++-4.9"
CPP = "/usr/bin/cpp-4.9"

configure file

Code: Select all

#!/usr/bin/env python
# /ClockworkModTether/Tether/node/configure

import optparse
import os
import pprint
import re
import subprocess
import sys

CC = os.environ.get('CC', 'cc')
###start of added lines###
CC = "/usr/bin/gcc-4.9"
cc = "/usr/bin/gcc-4.9"
gcc = "gcc-4.9"
CXX = "g++-4.9"
CPP = "cpp-4.9"
###end of added lines###

root_dir = os.path.dirname(__file__)
sys.path.insert(0, os.path.join(root_dir, 'deps', 'v8', 'tools'))

# parse our options
parser = optparse.OptionParser()

parser.add_option("--debug",
    action="store_true",
    dest="debug",
    help="Also build debug build")

parser.add_option("--prefix",
    action="store",
    dest="prefix",
    help="Select the install prefix (defaults to /usr/local)")

parser.add_option("--without-npm",
    action="store_true",
    dest="without_npm",
    help="Don\'t install the bundled npm package manager")

parser.add_option("--without-waf",
    action="store_true",
    dest="without_waf",
    help="Don\'t install node-waf")

parser.add_option("--without-ssl",
    action="store_true",
    dest="without_ssl",
    help="Build without SSL")

parser.add_option("--without-snapshot",
    action="store_true",
    dest="without_snapshot",
    help="Build without snapshotting V8 libraries. You might want to set"
         " this for cross-compiling. [Default: False]")

parser.add_option("--shared-v8",
    action="store_true",
    dest="shared_v8",
    help="Link to a shared V8 DLL instead of static linking")

parser.add_option("--shared-v8-includes",
    action="store",
    dest="shared_v8_includes",
    help="Directory containing V8 header files")

parser.add_option("--shared-v8-libpath",
    action="store",
    dest="shared_v8_libpath",
    help="A directory to search for the shared V8 DLL")

parser.add_option("--shared-v8-libname",
    action="store",
    dest="shared_v8_libname",
    help="Alternative lib name to link to (default: 'v8')")

parser.add_option("--shared-openssl",
    action="store_true",
    dest="shared_openssl",
    help="Link to a shared OpenSSl DLL instead of static linking")

parser.add_option("--shared-openssl-includes",
    action="store",
    dest="shared_openssl_includes",
    help="Directory containing OpenSSL header files")

parser.add_option("--shared-openssl-libpath",
    action="store",
    dest="shared_openssl_libpath",
    help="A directory to search for the shared OpenSSL DLLs")

parser.add_option("--shared-openssl-libname",
    action="store",
    dest="shared_openssl_libname",
    help="Alternative lib name to link to (default: 'crypto,ssl')")

# deprecated
parser.add_option("--openssl-use-sys",
    action="store_true",
    dest="shared_openssl",
    help=optparse.SUPPRESS_HELP)

# deprecated
parser.add_option("--openssl-includes",
    action="store",
    dest="shared_openssl_includes",
    help=optparse.SUPPRESS_HELP)

# deprecated
parser.add_option("--openssl-libpath",
    action="store",
    dest="shared_openssl_libpath",
    help=optparse.SUPPRESS_HELP)

parser.add_option("--no-ssl2",
    action="store_true",
    dest="no_ssl2",
    help="Disable OpenSSL v2")

parser.add_option("--shared-zlib",
    action="store_true",
    dest="shared_zlib",
    help="Link to a shared zlib DLL instead of static linking")

parser.add_option("--shared-zlib-includes",
    action="store",
    dest="shared_zlib_includes",
    help="Directory containing zlib header files")

parser.add_option("--shared-zlib-libpath",
    action="store",
    dest="shared_zlib_libpath",
    help="A directory to search for the shared zlib DLL")

parser.add_option("--shared-zlib-libname",
    action="store",
    dest="shared_zlib_libname",
    help="Alternative lib name to link to (default: 'z')")

parser.add_option("--with-dtrace",
    action="store_true",
    dest="with_dtrace",
    help="Build with DTrace (default is true on supported systems)")

parser.add_option("--without-dtrace",
    action="store_true",
    dest="without_dtrace",
    help="Build without DTrace")

parser.add_option("--with-etw",
    action="store_true",
    dest="with_etw",
    help="Build with ETW (default is true on Windows)")

parser.add_option("--without-etw",
    action="store_true",
    dest="without_etw",
    help="Build without ETW")

# CHECKME does this still work with recent releases of V8?
parser.add_option("--gdb",
    action="store_true",
    dest="gdb",
    help="add gdb support")

parser.add_option("--dest-cpu",
    action="store",
    dest="dest_cpu",
    help="CPU architecture to build for. Valid values are: arm, ia32, x64")

parser.add_option("--dest-os",
    action="store",
    dest="dest_os",
    help="Operating system to build for. Valid values are: "
         "win, mac, solaris, freebsd, linux")

parser.add_option("--no-ifaddrs",
    action="store_true",
    dest="no_ifaddrs",
    help="Use on deprecated SunOS systems that do not support ifaddrs.h")

parser.add_option("--with-arm-float-abi",
    action="store",
    dest="arm_float_abi",
    help="Specifies which floating-point ABI to use. Valid values are: "
         "soft, softfp, hard")

# Using --unsafe-optimizations voids your warranty.
parser.add_option("--unsafe-optimizations",
    action="store_true",
    dest="unsafe_optimizations",
    help=optparse.SUPPRESS_HELP)

(options, args) = parser.parse_args()


def b(value):
  """Returns the string 'true' if value is truthy, 'false' otherwise."""
  if value:
    return 'true'
  else:
    return 'false'


def pkg_config(pkg):
  cmd = os.popen('pkg-config --libs %s' % pkg, 'r')
  libs = cmd.readline().strip()
  ret = cmd.close()
  if (ret): return None

  cmd = os.popen('pkg-config --cflags %s' % pkg, 'r')
  cflags = cmd.readline().strip()
  ret = cmd.close()
  if (ret): return None

  return (libs, cflags)


def cc_macros():
  """Checks predefined macros using the CC command."""

  try:
    p = subprocess.Popen(CC.split() + ['-dM', '-E', '-'],
                         stdin=subprocess.PIPE,
                         stdout=subprocess.PIPE,
                         stderr=subprocess.PIPE)
  except OSError:
    print '''Node.js configure error: No acceptable C compiler found!

        Please make sure you have a C compiler installed on your system and/or
        consider adjusting the CC environment variable if you installed
        it in a non-standard prefix.
        '''
    sys.exit()

  p.stdin.write('\n')
  out = p.communicate()[0]

  out = str(out).split('\n')

  k = {}
  for line in out:
    import shlex
    lst = shlex.split(line)
    if len(lst) > 2:
      key = lst[1]
      val = lst[2]
      k[key] = val
  return k


def is_arch_armv7():
  """Check for ARMv7 instructions"""
  cc_macros_cache = cc_macros()
  return ('__ARM_ARCH_7__' in cc_macros_cache or
          '__ARM_ARCH_7A__' in cc_macros_cache or
          '__ARM_ARCH_7R__' in cc_macros_cache or
          '__ARM_ARCH_7M__' in cc_macros_cache)


def arm_hard_float_abi():
  """Check for hardfloat or softfloat eabi on ARM"""
  # GCC versions 4.6 and above define __ARM_PCS or __ARM_PCS_VFP to specify
  # the Floating Point ABI used (PCS stands for Procedure Call Standard).
  # We use these as well as a couple of other defines to statically determine
  # what FP ABI used.
  # GCC versions 4.4 and below don't support hard-fp.
  # GCC versions 4.5 may support hard-fp without defining __ARM_PCS or
  # __ARM_PCS_VFP.

  if compiler_version() >= (4, 6, 0):
    return '__ARM_PCS_VFP' in cc_macros()
  elif compiler_version() < (4, 5, 0):
    return False
  elif '__ARM_PCS_VFP' in cc_macros():
    return True
  elif ('__ARM_PCS' in cc_macros() or
        '__SOFTFP' in cc_macros() or
        not '__VFP_FP__' in cc_macros()):
    return False
  else:
    print '''Node.js configure error: Your version of GCC does not report
      the Floating-Point ABI to compile for your hardware

      Please manually specify which floating-point ABI to use with the
      --with-arm-float-abi option.
      '''
    sys.exit()


def host_arch_cc():
  """Host architecture check using the CC command."""

  k = cc_macros()

  matchup = {
    '__x86_64__'  : 'x64',
    '__i386__'    : 'ia32',
    '__arm__'     : 'arm',
  }

  rtn = 'ia32' # default

  for i in matchup:
    if i in k and k[i] != '0':
      rtn = matchup[i]
      break

  return rtn


def host_arch_win():
  """Host architecture check using environ vars (better way to do this?)"""

  arch = os.environ.get('PROCESSOR_ARCHITECTURE', 'x86')

  matchup = {
    'AMD64'  : 'x64',
    'x86'    : 'ia32',
    'arm'    : 'arm',
  }

  return matchup.get(arch, 'ia32')


def compiler_version():
  try:
    proc = subprocess.Popen(CC.split() + ['--version'], stdout=subprocess.PIPE)
  except WindowsError:
    return (0, False)

  is_clang = 'clang' in proc.communicate()[0].split('\n')[0]

  proc = subprocess.Popen(CC.split() + ['-dumpversion'], stdout=subprocess.PIPE)
  version = tuple(map(int, proc.communicate()[0].split('.')))

  return (version, is_clang)


def configure_arm(o):
  # V8 on ARM requires that armv7 is set. CPU Model detected by
  # the presence of __ARM_ARCH_7__ and the like defines in compiler
  if options.arm_float_abi:
    hard_float = options.arm_float_abi == 'hard'
  else:
    hard_float = arm_hard_float_abi()
  o['variables']['v8_use_arm_eabi_hardfloat'] = b(hard_float)

  armv7 = is_arch_armv7()
  if armv7:
    # CHECKME VFPv3 implies ARMv7+ but is the reverse true as well?
    o['variables']['arm_fpu'] = 'vfpv3'
    o['variables']['arm_neon'] = 0
  o['variables']['armv7'] = int(armv7)


def configure_node(o):
  # TODO add gdb
  o['variables']['v8_no_strict_aliasing'] = 1 # work around compiler bugs
  o['variables']['node_prefix'] = os.path.expanduser(options.prefix or '')
  o['variables']['node_install_npm'] = b(not options.without_npm)
  o['variables']['node_install_waf'] = b(not options.without_waf)
  o['variables']['node_unsafe_optimizations'] = (
    1 if options.unsafe_optimizations else 0)
  o['default_configuration'] = 'Debug' if options.debug else 'Release'

  host_arch = host_arch_win() if os.name == 'nt' else host_arch_cc()
  target_arch = options.dest_cpu or host_arch
  o['variables']['host_arch'] = host_arch
  o['variables']['target_arch'] = target_arch

  if target_arch == 'arm':
    configure_arm(o)

  cc_version, is_clang = compiler_version()
  o['variables']['clang'] = 1 if is_clang else 0

  if not is_clang and cc_version != 0:
    o['variables']['gcc_version'] = 10 * cc_version[0] + cc_version[1]

  # clang has always supported -fvisibility=hidden, right?
  if not is_clang and cc_version < (4,0,0):
    o['variables']['visibility'] = ''

  # By default, enable DTrace on SunOS systems. Don't allow it on other
  # systems, since it won't work.  (The MacOS build process is different than
  # SunOS, and we haven't implemented it.)
  if sys.platform.startswith('sunos'):
    o['variables']['node_use_dtrace'] = b(not options.without_dtrace)
  elif b(options.with_dtrace) == 'true':
    raise Exception('DTrace is currently only supported on SunOS systems.')
  else:
    o['variables']['node_use_dtrace'] = 'false'

  if options.no_ifaddrs:
    o['defines'] += ['SUNOS_NO_IFADDRS']

  # By default, enable ETW on Windows.
  if sys.platform.startswith('win32'):
    o['variables']['node_use_etw'] = b(not options.without_etw);
  elif b(options.with_etw) == 'true':
    raise Exception('ETW is only supported on Windows.')
  else:
    o['variables']['node_use_etw'] = 'false'


def configure_libz(o):
  o['variables']['node_shared_zlib'] = b(options.shared_zlib)

  # assume shared_zlib if one of these is set?
  if options.shared_zlib_libpath:
    o['libraries'] += ['-L%s' % options.shared_zlib_libpath]
  if options.shared_zlib_libname:
    o['libraries'] += ['-l%s' % options.shared_zlib_libname]
  elif options.shared_zlib:
    o['libraries'] += ['-lz']
  if options.shared_zlib_includes:
    o['include_dirs'] += [options.shared_zlib_includes]


def configure_v8(o):
  o['variables']['v8_use_snapshot'] = b(not options.without_snapshot)
  o['variables']['node_shared_v8'] = b(options.shared_v8)

  # assume shared_v8 if one of these is set?
  if options.shared_v8_libpath:
    o['libraries'] += ['-L%s' % options.shared_v8_libpath]
  if options.shared_v8_libname:
    o['libraries'] += ['-l%s' % options.shared_v8_libname]
  elif options.shared_v8:
    o['libraries'] += ['-lv8']
  if options.shared_v8_includes:
    o['include_dirs'] += [options.shared_v8_includes]


def configure_openssl(o):
  o['variables']['node_use_openssl'] = b(not options.without_ssl)
  o['variables']['node_shared_openssl'] = b(options.shared_openssl)

  if options.without_ssl:
    return

  if options.no_ssl2:
    o['defines'] += ['OPENSSL_NO_SSL2=1']

  if options.shared_openssl:
    (libs, cflags) = pkg_config('openssl') or ('-lssl -lcrypto', '')

    if options.shared_openssl_libpath:
      o['libraries'] += ['-L%s' % options.shared_openssl_libpath]

    if options.shared_openssl_libname:
      libnames = options.shared_openssl_libname.split(',')
      o['libraries'] += ['-l%s' % s for s in libnames]
    else:
      o['libraries'] += libs.split()

    if options.shared_openssl_includes:
      o['include_dirs'] += [options.shared_openssl_includes]
    else:
      o['cflags'] += cflags.split()


output = {
  'variables': {},
  'include_dirs': [],
  'libraries': [],
  'defines': [],
  'cflags': [],
}

configure_node(output)
configure_libz(output)
configure_v8(output)
configure_openssl(output)

# variables should be a root level element,
# move everything else to target_defaults
variables = output['variables']
del output['variables']
output = {
  'variables': variables,
  'target_defaults': output
}
pprint.pprint(output, indent=2)

def write(filename, data):
  filename = os.path.join(root_dir, filename)
  print "creating ", filename
  f = open(filename, 'w+')
  f.write(data)

write('config.gypi', "# Do not edit. Generated by the configure script.\n" +
  pprint.pformat(output, indent=2) + "\n")

write('config.mk', "# Do not edit. Generated by the configure script.\n" +
  ("BUILDTYPE=%s\n" % ('Debug' if options.debug else 'Release')))

if os.name == 'nt':
  gyp_args = ['-f', 'msvs', '-G', 'msvs_version=2010']
elif options.dest_os:
  gyp_args = ['-f', 'make-' + options.dest_os]
else:
  gyp_args = ['-f', 'make']

subprocess.call([sys.executable, 'tools/gyp_node'] + gyp_args)
7. Set C Compiler Environment Variables
export CC=/usr/bin/gcc-4.9
export cc=/usr/bin/gcc-4.9
export gcc=/usr/bin/gcc-4.9
export CXX=/usr/bin/g++-4.9
export CPP=/usr/bin/g++-4.9
These export environment variables will be gone after reboot

To permanently set environment variables:
gedit --> /etc/environment (nautilus, other locations, open with gedit)
save as /Desktop/environment
add the following lines
CC=/usr/bin/gcc-4.9
cc=/usr/bin/gcc-4.9
gcc=/usr/bin/gcc-4.9
CXX=/usr/bin/g++-4.9
CPP=/usr/bin/g++-4.9

cp /Desktop/environment /etc/environment
reboot

/etc/environment

Code: Select all

CC=/usr/bin/gcc-4.9
cc=/usr/bin/gcc-4.9
gcc=/usr/bin/gcc-4.9
CXX=/usr/bin/g++-4.9
CPP=/usr/bin/g++-4.9
List C compiler environment variables
sh environment_list.sh

environment_list.sh

Code: Select all

set | grep "CC"
set | grep "cc"
set | grep "gcc"
set | grep "CXX"
set | grep "CPP"
set | grep "CFLAGS"
set | grep "EXTRA_CFLAGS"
set | grep "CXXFLAGS"
set | grep "CPPFLAGS"
do not use version6 --> export CC=/usr/bin/gcc-6
do not use version6 --> export cc=/usr/bin/gcc-6
do not use version6 --> export gcc=/usr/bin/gcc-6
do not use version6 --> export CXX=/usr/bin/g++-6
do not use version6 --> export CPP=/usr/bin/g++-6

8. Install make
Synaptic Package Manager
insert debian9 stretch dvd
search make
select for installation
make (version 4.1-9.1) will be installed

9. Setup g++ command

cd /ClockworkModTether/Tether/node/
make

make[1]: g++: Command not found

find / -iname "g++-4.9"
/usr/bin/g++-4.9

cd /usr/bin

ln -s g++-4.9 g++ (create symbolic link for g++ command)

ls -l g++ (list symbolic link)
lrwxrwxrwx 1 root root 7 May 6 01:35 g++ -> g++-4.9 (first char = l, symbolic link)

ls -la | grep "\->" (list all symbolic links)

10. Compile
cd /ClockworkModTether/Tether/node/

./configure
make
make install

11. Run
cd /ClockworkModTether/Tether/
linux/run.sh

connect laptop usb cable to cell phone
now connected to internet

12. Copy from laptop to flash memory stick
copy with nautilus /ClockworkModTether/Tether/
displays error cannot copy symbolic links, press skip to continue

13. Copy from flash memory stick to laptop
copy with nautilus to /ClockworkModTether/Tether/
cd /ClockworkModTether/Tether/
chmod -R +x *
(chmod applies (+x execute) (-R recursively) to all directories)
(chmod fixes "Permission denied" error message when executing)

restore symbolic links
sh -v install_symbolic_links.sh

install_symbolic_links.sh

Code: Select all

#re-install symbolic links, nautilus cannot copy symbolic links

#*** first symbolic link ***
cd /ClockworkModTether/Tether/node
ln -s   out/Release/node    node
ls -la  | grep "\->"

#*** second symbolic link ***
cd /ClockworkModTether/Tether/node/tools/
ln -s   ../deps/v8/tools/run-valgrind.py   run-valgrind.py
ls -la  | grep "\->"

#*** third symbolic link, not required ***
#cd /ClockworkModTether/Tether/node/tools/blog/node_modules/.bin/
#(not required) ln -s   /Users/isaacs/dev/js/node-master/tools/blog/node_modules/marked/bin/marked    marked
#ls -la  | grep "\->"

#*** forth symbolic link ***
cd /ClockworkModTether/Tether/node/tools/doc/node_modules/.bin/
ln -s   ../marked/bin/marked    marked
ls -la  | grep "\->"
#

Post Reply