CUnit - Errors when trying to build using makefile or gcc - linux

So I went to this website to download the CUnit framework. I downloaded the folder into my Downloads folder using the following commands. I am getting a lot of errors shown below. Any help would be great. Break it down for me I am a Linux noob.
tar -xvf CUnit-2.1-3.tar.bz2
cd CUnit-2.1-3/
autoreconf --install
./configure
make
sudo make install
cd Examples/
make ExampleTests
Then I get the following errors:
gcc -DRELEASE=#RELEASE# -Wall -W -pedantic -Wshadow -ansi -I/home/renagade629/Downloads/CUnit-2.1-3/CUnit/Headers -std=c99 -L/home/renagade629/Downloads/CUnit-2.1-3/CUnit/Sources ExampleTests.c -o ExampleTests
/usr/lib/gcc/i686-linux-gnu/4.8/../../../i386-linux-gnu/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
/tmp/ccJcTm0I.o: In function `testSuccess1':
ExampleTests.c:(.text+0x5e): undefined reference to `CU_assertImplementation'
/tmp/ccJcTm0I.o: In function `testSuccess2':
ExampleTests.c:(.text+0x9a): undefined reference to `CU_assertImplementation'
/tmp/ccJcTm0I.o: In function `testSuccess3':
ExampleTests.c:(.text+0xd6): undefined reference to `CU_assertImplementation'
/tmp/ccJcTm0I.o: In function `testSuiteFailure1':
ExampleTests.c:(.text+0x112): undefined reference to `CU_assertImplementation'
/tmp/ccJcTm0I.o: In function `testSuiteFailure2':
ExampleTests.c:(.text+0x14e): undefined reference to `CU_assertImplementation'
/tmp/ccJcTm0I.o:ExampleTests.c:(.text+0x18a): more undefined references to `CU_assertImplementation' follow
/tmp/ccJcTm0I.o: In function `AddTests':
ExampleTests.c:(.text+0x14b9): undefined reference to `CU_get_registry'
ExampleTests.c:(.text+0x14e6): undefined reference to `CU_is_test_running'
ExampleTests.c:(.text+0x151a): undefined reference to `CU_register_suites'
ExampleTests.c:(.text+0x1523): undefined reference to `CU_get_error_msg'
collect2: error: ld returned 1 exit status
make: *** [ExampleTests] Error 1
I also tried to manually compile it using GCC as follows
gcc -Wall -I/Downloads/CUnit-2.1-3/CUnit/Headers ExampleTests.c -o ExampleTests -lcunit
And it gives me this error (not sure why since the .h file exists):
Unit-2.1-3/CUnit/Headers ExampleTests.c -o ExampleTests -lcunit
ExampleTests.c:26:19: fatal error: CUnit.h: No such file or directory
#include "CUnit.h"
^
compilation terminated.
Below is the tree of my CUnit directory
tree
.
├── aclocal.m4
├── AUTHORS
├── autom4te.cache
│   ├── output.0
│   ├── output.1
│   ├── output.2
│   ├── output.3
│   ├── requests
│   ├── traces.0
│   ├── traces.1
│   ├── traces.2
│   └── traces.3
├── bootstrap
├── ChangeLog
├── compile
├── config.guess
├── config.h
├── config.h.in
├── config.h.in~
├── config.log
├── config.status
├── config.sub
├── configure
├── configure.in
├── COPYING
├── CUnit
│   ├── CUnit.dsp
│   ├── Headers
│   │   ├── Automated.h
│   │   ├── Basic.h
│   │   ├── Console.h
│   │   ├── CUCurses.h
│   │   ├── CUError.h
│   │   ├── CUnit.h
│   │   ├── CUnit.h.in
│   │   ├── CUnit_intl.h
│   │   ├── Jamfile
│   │   ├── Makefile
│   │   ├── Makefile.am
│   │   ├── Makefile.in
│   │   ├── MyMem.h
│   │   ├── TestDB.h
│   │   ├── TestRun.h
│   │   ├── Util.h
│   │   └── wxWidget.h
│   ├── Jamfile
│   ├── Makefile
│   ├── Makefile.am
│   ├── Makefile.in
│   └── Sources
│   ├── Automated
│   │   ├── Automated.c
│   │   ├── Automated.lo
│   │   ├── Automated.o
│   │   ├── libcunitautomated.la
│   │   ├── Makefile
│   │   ├── Makefile.am
│   │   └── Makefile.in
│   ├── Basic
│   │   ├── Basic.c
│   │   ├── Basic.lo
│   │   ├── Basic.o
│   │   ├── libcunitbasic.la
│   │   ├── Makefile
│   │   ├── Makefile.am
│   │   └── Makefile.in
│   ├── Console
│   │   ├── Console.c
│   │   ├── Console.lo
│   │   ├── Console.o
│   │   ├── libcunitconsole.la
│   │   ├── Makefile
│   │   ├── Makefile.am
│   │   └── Makefile.in
│   ├── Curses
│   │   ├── Curses.c
│   │   ├── Makefile
│   │   ├── Makefile.am
│   │   └── Makefile.in
│   ├── Framework
│   │   ├── CUError.c
│   │   ├── CUError.lo
│   │   ├── CUError.o
│   │   ├── libcunitfmk.la
│   │   ├── Makefile
│   │   ├── Makefile.am
│   │   ├── Makefile.in
│   │   ├── MyMem.c
│   │   ├── MyMem.lo
│   │   ├── MyMem.o
│   │   ├── TestDB.c
│   │   ├── TestDB.lo
│   │   ├── TestDB.o
│   │   ├── TestRun.c
│   │   ├── TestRun.lo
│   │   ├── TestRun.o
│   │   ├── Util.c
│   │   ├── Util.lo
│   │   └── Util.o
│   ├── libcunit.la
│   ├── Makefile
│   ├── Makefile.am
│   ├── Makefile.in
│   ├── Test
│   │   ├── Jamfile
│   │   ├── Makefile
│   │   ├── Makefile.am
│   │   ├── Makefile.in
│   │   ├── test_cunit.c
│   │   └── test_cunit.h
│   ├── Win
│   │   ├── resource.h
│   │   ├── Win.c
│   │   └── Win.h
│   └── wxWidget
│   ├── icon_suite_active_open.xpm
│   ├── icon_suite_active.xpm
│   ├── icon_suite_inactive_open.xpm
│   ├── icon_suite_inactive.xpm
│   ├── icon_test_active_suite_inactive.xpm
│   ├── icon_test_active.xpm
│   ├── icon_test_inactive_suite_inactive.xpm
│   ├── icon_test_inactive.xpm
│   ├── Makefile.am
│   └── wxWidget.cpp
├── CUnit.dsw
├── cunit.pc
├── cunit.pc.in
├── CUnit.spec
├── CUnit.spec.in
├── depcomp
├── doc
│   ├── CUnit_doc.css
│   ├── error_handling.html
│   ├── fdl.html
│   ├── headers
│   │   ├── Automated.h
│   │   ├── Basic.h
│   │   ├── Console.h
│   │   ├── CUCurses.h
│   │   ├── CUError.h
│   │   ├── CUnit.h
│   │   ├── CUnit_intl.h
│   │   ├── Jamfile
│   │   ├── Makefile
│   │   ├── Makefile.am
│   │   ├── Makefile.in
│   │   ├── MyMem.h
│   │   ├── TestDB.h
│   │   ├── TestRun.h
│   │   ├── Util.h
│   │   ├── Win.h
│   │   └── wxWidget.h
│   ├── index.html
│   ├── introduction.html
│   ├── Jamfile
│   ├── Makefile
│   ├── Makefile.am
│   ├── Makefile.in
│   ├── managing_tests.html
│   ├── running_tests.html
│   ├── test_registry.html
│   └── writing_tests.html
├── Doxyfile
├── Examples
│   ├── AutomatedTest
│   │   ├── AutomatedTest.c
│   │   ├── AutomatedTest.dsp
│   │   ├── AutomatedTest_v1.c
│   │   ├── Jamfile
│   │   ├── Makefile
│   │   ├── Makefile.am
│   │   ├── Makefile.in
│   │   └── README
│   ├── BasicTest
│   │   ├── BasicTest.c
│   │   ├── BasicTest.dsp
│   │   ├── Jamfile
│   │   ├── Makefile
│   │   ├── Makefile.am
│   │   ├── Makefile.in
│   │   └── README
│   ├── ConsoleTest
│   │   ├── ConsoleTest.c
│   │   ├── ConsoleTest.dsp
│   │   ├── ConsoleTest_v1.c
│   │   ├── Jamfile
│   │   ├── Makefile
│   │   ├── Makefile.am
│   │   ├── Makefile.in
│   │   └── README
│   ├── CursesTest
│   │   ├── CursesTest.c
│   │   ├── CursesTest_v1.c
│   │   ├── Jamfile
│   │   ├── Makefile
│   │   ├── Makefile.am
│   │   ├── Makefile.in
│   │   └── README
│   ├── Demo_fprintf
│   │   └── CUnitExample.c
│   ├── ExampleTests.c
│   ├── ExampleTests.h
│   ├── Jamfile
│   ├── Makefile
│   ├── Makefile.am
│   ├── Makefile.in
│   ├── WinTest
│   │   ├── Jamfile
│   │   ├── ReadMe.txt
│   │   ├── StdAfx.cpp
│   │   ├── StdAfx.h
│   │   ├── WinTest.cpp
│   │   ├── WinTest.dsp
│   │   └── WinTest_v1.cpp
│   └── wxWidgetsTest
│   ├── Makefile.am
│   ├── README
│   ├── wxWidgetsTest.c
│   └── wxWidgetsTest.rc
├── INSTALL
├── install-sh
├── Jambase
├── Jamfile
├── Jamrules
├── Jamrules.in
├── libcunit_dll.def
├── libtool
├── ltmain.sh
├── Makefile
├── Makefile.am
├── Makefile.in
├── Man
│   ├── Jamfile
│   ├── Makefile
│   ├── Makefile.am
│   ├── Makefile.in
│   └── man3
│   ├── CUnit.3
│   ├── Jamfile
│   ├── Makefile
│   ├── Makefile.am
│   └── Makefile.in
├── missing
├── mkinstalldirs
├── NEWS
├── PACKAGE
├── README
├── Share
│   ├── CUnit-List.dtd
│   ├── CUnit-List.xsl
│   ├── CUnit-Run.dtd
│   ├── CUnit-Run.xsl
│   ├── Jamfile
│   ├── Makefile
│   ├── Makefile.am
│   ├── Makefile.in
│   ├── md2xml.pl
│   ├── Memory-Dump.dtd
│   └── Memory-Dump.xsl
├── stamp-h1
├── stamp-h.in
├── TODO
├── VC7
│   ├── AutomatedTest
│   │   └── AutomatedTest.vcproj
│   ├── AutomatedTest_v1
│   │   └── AutomatedTest_v1.vcproj
│   ├── BasicTest
│   │   └── BasicTest.vcproj
│   ├── ConsoleTest
│   │   └── ConsoleTest.vcproj
│   ├── ConsoleTest_v1
│   │   └── ConsoleTest_v1.vcproj
│   ├── CUnit.sln
│   ├── CUnit.suo
│   ├── libcunit
│   │   └── libcunit.vcproj
│   ├── Readme.txt
│   └── test_cunit
│   └── test_cunit.vcproj
├── VC8
│   ├── AutomatedTest_v1.vcproj
│   ├── AutomatedTest.vcproj
│   ├── BasicTest.vcproj
│   ├── ConsoleTest_v1.vcproj
│   ├── ConsoleTest.vcproj
│   ├── CUnit.sln
│   ├── CUnit.suo
│   ├── libcunit.vcproj
│   ├── Readme.txt
│   ├── test_cunit.vcproj
│   └── wxWidgetsTest.vcproj
├── VC9
│   ├── AutomatedTest.vcproj
│   ├── BasicTest.vcproj
│   ├── ConsoleTest.vcproj
│   ├── CUnit.sln
│   ├── CUnit.sln.cache
│   ├── CUnit.suo
│   ├── libcunit.vcproj
│   ├── Readme.txt
│   └── test_cunit.vcproj
└── VERSION

The manual command is failing because you didn't use the correct -I flag. You lost the leading /home/renagade629 prefix when you transcribed the make output.

Related

How to create .deb package from JavaFx project?

I wan't to create installer for my JavaFx application project (.deb package). I discovered that this can be done using intellij, but It's not working for my project. Deb package is created, but after installation my app is not running. Besides I wan't to customize this package. From the main debian page I read that I need to create a "control" file and with dpkg-deb --build I can create a package. But I don't know how to configure the "control" file and how to connect it all to the Main.java boot class or to the generated jar file. I'm looking for tips or advise how to do it best.
I used intellij to create a .deb package with it, but should this package be that big? (67MB) It is around 250MB to install. My .jar file with dependencies weighs 1.9MB. I have looked at this package and there are various libraries through which this package weighs so much (mainly amd64 and ext):
── lib
│   ├── amd64
│   │   ├── jli
│   │   │   └── libjli.so
│   │   ├── jvm.cfg
│   │   ├── libattach.so
│   │   ├── libavplugin-53.so
│   │   ├── libavplugin-54.so
│   │   ├── libavplugin-55.so
│   │   ├── libavplugin-56.so
│   │   ├── libavplugin-57.so
│   │   ├── libavplugin-ffmpeg-56.so
│   │   ├── libavplugin-ffmpeg-57.so
│   │   ├── libavplugin-ffmpeg-58.so
│   │   ├── libawt_headless.so
│   │   ├── libawt.so
│   │   ├── libawt_xawt.so
│   │   ├── libbci.so
│   │   ├── libdcpr.so
│   │   ├── libdecora_sse.so
│   │   ├── libdeploy.so
│   │   ├── libdt_socket.so
│   │   ├── libfontmanager.so
│   │   ├── libfxplugins.so
│   │   ├── libglassgtk2.so
│   │   ├── libglassgtk3.so
│   │   ├── libglass.so
│   │   ├── libglib-lite.so
│   │   ├── libgstreamer-lite.so
│   │   ├── libhprof.so
│   │   ├── libinstrument.so
│   │   ├── libj2gss.so
│   │   ├── libj2pcsc.so
│   │   ├── libj2pkcs11.so
│   │   ├── libjaas_unix.so
│   │   ├── libjava_crw_demo.so
│   │   ├── libjavafx_font_freetype.so
│   │   ├── libjavafx_font_pango.so
│   │   ├── libjavafx_font.so
│   │   ├── libjavafx_iio.so
│   │   ├── libjava.so
│   │   ├── libjawt.so
│   │   ├── libjdwp.so
│   │   ├── libjfr.so
│   │   ├── libjfxmedia.so
│   │   ├── libjfxwebkit.so
│   │   ├── libjpeg.so
│   │   ├── libjsdt.so
│   │   ├── libjsig.so
│   │   ├── libjsoundalsa.so
│   │   ├── libjsound.so
│   │   ├── liblcms.so
│   │   ├── libmanagement.so
│   │   ├── libmlib_image.so
│   │   ├── libnet.so
│   │   ├── libnio.so
│   │   ├── libnpt.so
│   │   ├── libprism_common.so
│   │   ├── libprism_es2.so
│   │   ├── libprism_sw.so
│   │   ├── libresource.so
│   │   ├── libsaproc.so
│   │   ├── libsctp.so
│   │   ├── libsplashscreen.so
│   │   ├── libsunec.so
│   │   ├── libt2k.so
│   │   ├── libunpack.so
│   │   ├── libverify.so
│   │   ├── libzip.so
│   │   └── server
│   │   ├── libjsig.so
│   │   ├── libjvm.so
│   │   └── Xusage.txt
│   ├── calendars.properties
│   ├── charsets.jar
│   ├── classlist
│   ├── cmm
│   │   ├── CIEXYZ.pf
│   │   ├── GRAY.pf
│   │   ├── LINEAR_RGB.pf
│   │   ├── PYCC.pf
│   │   └── sRGB.pf
│   ├── content-types.properties
│   ├── currency.data
│   ├── deploy.jar
│   ├── ext
│   │   ├── cldrdata.jar
│   │   ├── dnsns.jar
│   │   ├── jaccess.jar
│   │   ├── jfxrt.jar
│   │   ├── localedata.jar
│   │   ├── meta-index
│   │   ├── nashorn.jar
│   │   ├── sunec.jar
│   │   ├── sunjce_provider.jar
│   │   ├── sunpkcs11.jar
│   │   └── zipfs.jar
│   ├── flavormap.properties
│   ├── fontconfig.bfc
│   ├── fontconfig.properties.src
│   ├── fontconfig.RedHat.5.bfc
│   ├── fontconfig.RedHat.5.properties.src
│   ├── fontconfig.RedHat.6.bfc
│   ├── fontconfig.RedHat.6.properties.src
│   ├── fontconfig.SuSE.10.bfc
│   ├── fontconfig.SuSE.10.properties.src
│   ├── fontconfig.SuSE.11.bfc
│   ├── fontconfig.SuSE.11.properties.src
│   ├── fontconfig.Turbo.bfc
│   ├── fontconfig.Turbo.properties.src
│   ├── fonts
│   │   ├── fonts.dir
│   │   ├── LucidaBrightDemiBold.ttf
│   │   ├── LucidaBrightDemiItalic.ttf
│   │   ├── LucidaBrightItalic.ttf
│   │   ├── LucidaBrightRegular.ttf
│   │   ├── LucidaSansDemiBold.ttf
│   │   ├── LucidaSansRegular.ttf
│   │   ├── LucidaTypewriterBold.ttf
│   │   └── LucidaTypewriterRegular.ttf
│   ├── hijrah-config-umalqura.properties
│   ├── images
│   │   ├── cursors
│   │   │   ├── cursors.properties
│   │   │   ├── invalid32x32.gif
│   │   │   ├── motif_CopyDrop32x32.gif
│   │   │   ├── motif_CopyNoDrop32x32.gif
│   │   │   ├── motif_LinkDrop32x32.gif
│   │   │   ├── motif_LinkNoDrop32x32.gif
│   │   │   ├── motif_MoveDrop32x32.gif
│   │   │   └── motif_MoveNoDrop32x32.gif
│   │   └── icons
│   │   ├── sun-java_HighContrastInverse.png
│   │   ├── sun-java_HighContrast.png
│   │   ├── sun-java_LowContrast.png
│   │   └── sun-java.png
│   ├── javafx.properties
│   ├── javaws.jar
│   ├── jce.jar
│   ├── jexec
│   ├── jfr
│   │   ├── default.jfc
│   │   └── profile.jfc
│   ├── jfr.jar
│   ├── jfxswt.jar
│   ├── jsse.jar
│   ├── jvm.hprof.txt
│   ├── locale
│   │   ├── de
│   │   │   └── LC_MESSAGES
│   │   │   └── sunw_java_plugin.mo
│   │   ├── es
│   │   │   └── LC_MESSAGES
│   │   │   └── sunw_java_plugin.mo
│   │   ├── fr
│   │   │   └── LC_MESSAGES
│   │   │   └── sunw_java_plugin.mo
│   │   ├── it
│   │   │   └── LC_MESSAGES
│   │   │   └── sunw_java_plugin.mo
│   │   ├── ja
│   │   │   └── LC_MESSAGES
│   │   │   └── sunw_java_plugin.mo
│   │   ├── ko
│   │   │   └── LC_MESSAGES
│   │   │   └── sunw_java_plugin.mo
│   │   ├── ko.UTF-8
│   │   │   └── LC_MESSAGES
│   │   │   └── sunw_java_plugin.mo
│   │   ├── pt_BR
│   │   │   └── LC_MESSAGES
│   │   │   └── sunw_java_plugin.mo
│   │   ├── sv
│   │   │   └── LC_MESSAGES
│   │   │   └── sunw_java_plugin.mo
│   │   ├── zh
│   │   │   └── LC_MESSAGES
│   │   │   └── sunw_java_plugin.mo
│   │   ├── zh.GBK
│   │   │   └── LC_MESSAGES
│   │   │   └── sunw_java_plugin.mo
│   │   ├── zh_HK.BIG5HK
│   │   │   └── LC_MESSAGES
│   │   │   └── sunw_java_plugin.mo
│   │   ├── zh_TW
│   │   │   └── LC_MESSAGES
│   │   │   └── sunw_java_plugin.mo
│   │   └── zh_TW.BIG5
│   │   └── LC_MESSAGES
│   │   └── sunw_java_plugin.mo
│   ├── logging.properties
│   ├── management
│   │   ├── jmxremote.access
│   │   ├── jmxremote.password.template
│   │   ├── management.properties
│   │   └── snmp.acl.template
│   ├── management-agent.jar
│   ├── meta-index
│   ├── net.properties
│   ├── oblique-fonts
│   │   ├── fonts.dir
│   │   ├── LucidaSansDemiOblique.ttf
│   │   ├── LucidaSansOblique.ttf
│   │   ├── LucidaTypewriterBoldOblique.ttf
│   │   └── LucidaTypewriterOblique.ttf
│   ├── plugin.jar
│   ├── psfontj2d.properties
│   ├── psfont.properties.ja
│   ├── resources.jar
│   ├── rt.jar
│   ├── security
│   │   ├── blacklist
│   │   ├── blacklisted.certs
│   │   ├── cacerts
│   │   ├── java.policy
│   │   ├── java.security
│   │   ├── javaws.policy
│   │   ├── policy
│   │   │   ├── limited
│   │   │   │   ├── local_policy.jar
│   │   │   │   └── US_export_policy.jar
│   │   │   └── unlimited
│   │   │   ├── local_policy.jar
│   │   │   └── US_export_policy.jar
│   │   └── trusted.libraries
│   ├── sound.properties
│   └── tzdb.dat
these libraries are necessary, can I somehow reduce the size of this file?

How to make mtd-utils 2.0 for specified deployment path

I downloaded mtd-utils 2.0 and I want to built it for specified deployment path. If I launch:
./configure --bindir .../mtd-utils-81049e5/deploy/usr/sbin
and then I do:
make
I will get output into folder, where I launched make. I want to have executable files somewhere like: bla/mtd-utils-2.0.../deploy/usr/sbin...
IIUC, you can do this like that:
./configure --prefix=/tmp/mtd-utils
make
make install
Finally, you get this:
$ tree /tmp/mtd-utils
/tmp/mtd-utils
├── sbin
│   ├── doc_loadbios
│   ├── docfdisk
│   ├── flash_erase
│   ├── flash_eraseall
│   ├── flash_lock
│   ├── flash_otp_dump
│   ├── flash_otp_info
│   ├── flash_otp_lock
│   ├── flash_otp_write
│   ├── flash_unlock
│   ├── flashcp
│   ├── ftl_check
│   ├── ftl_format
│   ├── jffs2dump
│   ├── jffs2reader
│   ├── mkfs.jffs2
│   ├── mkfs.ubifs
│   ├── mtd_debug
│   ├── mtdinfo
│   ├── mtdpart
│   ├── nanddump
│   ├── nandtest
│   ├── nandwrite
│   ├── nftl_format
│   ├── nftldump
│   ├── recv_image
│   ├── rfddump
│   ├── rfdformat
│   ├── serve_image
│   ├── sumtool
│   ├── ubiattach
│   ├── ubiblock
│   ├── ubicrc32
│   ├── ubidetach
│   ├── ubiformat
│   ├── ubimkvol
│   ├── ubinfo
│   ├── ubinize
│   ├── ubirename
│   ├── ubirmvol
│   ├── ubirsvol
│   └── ubiupdatevol
└── share
└── man
├── man1
│   └── mkfs.jffs2.1
└── man8
└── ubinize.8
5 directories, 44 files

Python3.5 recursive glob not showing matching files

With Pyton >= 3.5 glob supports recursive searching. I am attempting to do this, but with no success.
Here you can see my directory structure:
/Volumes/user/TEST/
└── [NAME]john\ doe,\ peter\ griffin\ -\ sample\ video[29.06.17][1080]{user}
├── [NAME]john\ doe,\ perter\ griffin\ -\ sample\ video[29.06.17][1080]{user}.mp4
├── [NAME]john\ doe,\ peter\ griffin\ -\ sample\ video[29.06.17][Hi-Res]
│   ├── 583a6ea574035-img-8399.jpg
│   ├── 583a6eb9681c0-img-8401.jpg
│   ├── 583a6eb9e53e1-img-8402.jpg
│   ├── 583a6ecad078d-img-8404.jpg
│   ├── 583a6ecd207ed-img-8403.jpg
│   ├── 583a6edb7348c-img-8405.jpg
│   ├── 583a6ede1cbfa-img-8406.jpg
│   ├── 583a6eeb294a9-img-8407.jpg
│   ├── 583a6eee94a45-img-8408.jpg
│   ├── 583a6efb2389a-img-8409.jpg
│   ├── 583a6f01a78ae-img-8410.jpg
│   ├── 583a6f0daea30-img-8411.jpg
│   ├── 583a6f1301e3c-img-8412.jpg
│   ├── 583a6f1ec07d8-img-8413.jpg
│   ├── 583a6f240d4ce-img-8414.jpg
│   ├── 583a6f306f517-img-8415.jpg
│   ├── 583a6f36def7a-img-8416.jpg
│   ├── 583a6f4280706-img-8417.jpg
│   ├── 583a6f48b8b11-img-8418.jpg
│   ├── 583a6f55160cc-img-8419.jpg
│   ├── 583a6f5b7fb35-img-8420.jpg
│   ├── 583a6f68aad40-img-8423.jpg
│   ├── 583a6f6da8c0b-img-8424.jpg
│   ├── 583a6f7b9e1d6-img-8425.jpg
│   ├── 583a6f8069e59-img-8426.jpg
│   ├── 583a6f8e9891e-img-8427.jpg
│   ├── 583a6f9427910-img-8428.jpg
│   ├── 583a6fa45e3f4-img-8429.jpg
│   ├── 583a6fa96b182-img-8430.jpg
│   ├── 583a6fb935bf2-img-8431.jpg
│   ├── 583a6fca7a0c9-img-8433.jpg
│   ├── 583a6fcbab549-img-8434.jpg
│   ├── 583a6fdcf2812-img-8435.jpg
│   ├── 583a6fde5ee86-img-8436.jpg
│   ├── 583a6fee54d9b-img-8437.jpg
│   ├── 583a6ff0acb76-img-8438.jpg
│   ├── 583a7000ecd80-img-8439.jpg
│   ├── 583a70026c325-img-8440.jpg
│   ├── 583a701319c22-img-8441.jpg
│   ├── 583a701457221-img-8443.jpg
│   ├── 583a7027e8531-img-8444.jpg
│   ├── 583a7029f0e7c-img-8445.jpg
│   ├── 583a703d6c3c9-img-8446.jpg
│   ├── 583a703f879f5-img-8447.jpg
│   ├── 583a7051ae77a-img-8448.jpg
│   ├── 583a705b588c3-img-8449.jpg
│   ├── 583a706d40811-img-8450.jpg
│   ├── 583a7076cb3e9-img-8451.jpg
│   ├── 583a70894ec35-img-8452.jpg
│   ├── 583a70964fbcb-img-8453.jpg
│   ├── cai-8498-pa.jpg
│   └── cai-8498-pt.jpg
├── [NAME]john\ doe,\ peter\ griffin\ -\ sample\ video[29.06.17][Hi-Res].jpg
└── cover.png
So the images are definitely there.
Now here is my method, that for some reason, is not working:
def count_images(folder):
"""
Count the number of images in a folder.
:param folder: Folder to count the images
:return: Number of photos
"""
print(folder)
files = [file for file in glob.glob(folder + '/**/*.jpg', recursive=True)]
print(files)
return len([file for file in glob.glob(folder + '/**/*.jpg', recursive=True)])
But it just outputs the following:
/Volumes/user/TEST/[NAME]john doe, peter griffin - sample video[29.06.17][1080]{user}/
[]
It is becoming extremely frustrating, as I do not see what I am doing wrong.
So I found the problem.
The glob module has issues with certain characters in the filename - [ and ] in this case. You can use glob.escape() to escape these characters in the filename.
So the final function will look like this:
def count_images(folder):
return len([file for file in glob.glob(glob.escape(folder) + '/**/*.jpg', recursive=True)])

Correct way of starting a NodeJs, React project with Express

I'm beginning with React, NodeJs and ExpressJs. I have seen many tutorials but I'm not sure of the correct way to start a project?
I have seen two ways. The first being express <project_name> and the second being npm init.
Which is correct and if there isn't a correct way then why would you initialize them differently when npm init includes express eventually (In the tutorials).
Thanks
npm init is good way to start, as you know it creates a package.json file in your project directory where you can store your project dependencies.
After this you must run the following commands:
npm install --save-dev webpack
npm install --save-dev babel
npm install --save-dev babel-loader
npm install babel-core
npm install babel-preset-env
npm install babel-preset-react
or as a single line command use this:
npm install --save-dev webpack babel babel-loader babel-core babel-preset-env babel-preset-react
first command will create a webpack.config.js file.
Second command will ready the babel to use in your project and the third to use babel-loader.
Now it's time to create project structure which looks like :
projectFolder/
├── package.json
├── public
│   ├── favicon.ico
│   └── index.html
├── README.md
└── src
├── App.css
├── App.js
├── App.test.js
├── index.css
├── index.js
└── logo.png
This is the very basic project structure. It doesn't have server side structure.
full structure looks like:
react/
├── CHANGELOG.md
├── CONTRIBUTING.md
├── docs
│   ├── data-fetching.md
│   ├── getting-started.md
│   ├── how-to-configure-text-editors.md
│   ├── react-style-guide.md
│   ├── README.md
│   └── recipes/
├── LICENSE.txt
├── node_modules/
├── package.json
├── README.md
├── src
│   ├── actions
│   ├── client.js
│   ├── components
│   │   ├── App
│   │   │   ├── App.js
│   │   │   ├── App.scss
│   │   │   ├── package.json
│   │   │   └── __tests__
│   │   │   └── App-test.js
│   │   ├── ContentPage
│   │   │   ├── ContentPage.js
│   │   │   ├── ContentPage.scss
│   │   │   └── package.json
│   │   ├── ErrorPage
│   │   │   ├── ErrorPage.js
│   │   │   ├── ErrorPage.scss
│   │   │   └── package.json
│   │   ├── Feedback
│   │   │   ├── Feedback.js
│   │   │   ├── Feedback.scss
│   │   │   └── package.json
│   │   ├── Footer
│   │   │   ├── Footer.js
│   │   │   ├── Footer.scss
│   │   │   └── package.json
│   │   ├── Header
│   │   │   ├── Header.js
│   │   │   ├── Header.scss
│   │   │   ├── logo-small#2x.png
│   │   │   ├── logo-small.png
│   │   │   └── package.json
│   │   ├── Link
│   │   │   ├── Link.js
│   │   │   └── package.json
│   │   ├── Navigation
│   │   │   ├── Navigation.js
│   │   │   ├── Navigation.scss
│   │   │   └── package.json
│   │   ├── NotFoundPage
│   │   │   ├── NotFoundPage.js
│   │   │   ├── NotFoundPage.scss
│   │   │   └── package.json
│   │   ├── TextBox
│   │   │   ├── package.json
│   │   │   ├── TextBox.js
│   │   │   └── TextBox.scss
│   │   ├── variables.scss
│   │   └── withViewport.js
│   ├── config.js
│   ├── constants
│   │   └── ActionTypes.js
│   ├── content
│   │   ├── about.jade
│   │   ├── index.jade
│   │   └── privacy.jade
│   ├── core
│   │   ├── db.js
│   │   ├── DOMUtils.js
│   │   ├── fetch
│   │   │   ├── fetch.client.js
│   │   │   ├── fetch.server.js
│   │   │   └── package.json
│   │   ├── Location.js
│   │   └── passport.js
│   ├── data
│   │   ├── queries
│   │   │   ├── content.js
│   │   │   ├── me.js
│   │   │   └── news.js
│   │   ├── schema.js
│   │   └── types
│   │   ├── ContentType.js
│   │   ├── NewsItemType.js
│   │   └── UserType.js
│   ├── public
│   │   ├── apple-touch-icon.png
│   │   ├── browserconfig.xml
│   │   ├── crossdomain.xml
│   │   ├── favicon.ico
│   │   ├── humans.txt
│   │   ├── robots.txt
│   │   ├── tile.png
│   │   └── tile-wide.png
│   ├── routes
│   │   ├── contact
│   │   │   ├── Contact.js
│   │   │   ├── Contact.scss
│   │   │   └── index.js
│   │   ├── home
│   │   │   ├── Home.js
│   │   │   ├── Home.scss
│   │   │   └── index.js
│   │   ├── login
│   │   │   ├── index.js
│   │   │   ├── Login.js
│   │   │   └── Login.scss
│   │   └── register
│   │   ├── index.js
│   │   ├── Register.js
│   │   └── Register.scss
│   ├── routes.js
│   ├── server.js
│   ├── stores
│   └── views
│   ├── error.jade
│   └── index.jade
├── test
│   └── stubs
│   └── SCSSStub.js
└── tools
├── build.js
├── bundle.js
├── clean.js
├── copy.js
├── deploy.js
├── lib
│   ├── fetch.js
│   └── fs.js
├── README.md
├── run.js
├── runServer.js
├── start.js
└── webpack.config.js
Created using yeoman generator-react-fullstack
Alternatively you can do all this stuff by simply using yeoman react generator but be careful with generators, they sometimes toughen your deployment process.

npm install , installs package not even listed in my package.json file

I am new to NodeJS and just cloned the code and checked my node_modules folder which has almost 100's of dependencies installed. This is my directory structure
node_modules/
├── accepts
├── after
│   └── test
├── ansi-regex
├── ansi-styles
├── arraybuffer.slice
│   └── test
├── array-flatten
├── asn1
│   ├── lib
│   │   └── ber
│   └── tst
│   └── ber
├── assert-plus
├── async
│   ├── lib
│   └── support
├── aws-sign2
├── backo2
│   └── test
├── base64-arraybuffer
│   ├── lib
│   └── test
├── base64id
│   └── lib
├── base64-url
├── benchmark
│   ├── doc
│   └── test
├── better-assert
├── bindings
├── bl
│   ├── node_modules
│   │   └── readable-stream
│   │   ├── doc
│   │   │   └── wg-meetings
│   │   └── lib
│   └── test
├── blob
│   └── test
├── bluebird
│   └── js
│   ├── browser
│   └── main
├── body-parser
│   └── lib
│   └── types
├── boom
│   ├── images
│   ├── lib
│   └── test
├── bson
│   ├── alternate_parsers
│   ├── browser_build
│   ├── lib
│   │   └── bson
│   │   └── parser
│   └── tools
├── bufferutil
│   ├── build
│   │   └── Release
│   │   └── obj.target
│   │   └── bufferutil
│   │   └── src
│   └── src
├── bytes
├── callsite
├── caseless
├── chalk
├── combined-stream
│   └── lib
├── commander
├── component-bind
├── component-emitter
├── component-inherit
│   └── test
├── connect-mongodb-session
│   └── test
├── content-disposition
├── content-type
├── cookie
├── cookie-parser
├── cookie-signature
├── core-util-is
│   └── lib
├── crc
│   └── lib
├── cryptiles
│   ├── lib
│   └── test
├── dashdash
│   └── lib
├── debug
├── delayed-stream
│   └── lib
├── depd
│   └── lib
│   ├── browser
│   └── compat
├── destroy
├── ecc-jsbn
│   └── lib
├── ee-first
├── engine.io
│   ├── lib
│   │   └── transports
│   └── node_modules
│   ├── debug
│   └── ms
├── engine.io-client
│   ├── lib
│   │   └── transports
│   └── node_modules
│   ├── debug
│   ├── ms
│   └── parseuri
├── engine.io-parser
│   └── lib
├── es6-promise
│   ├── dist
│   └── lib
│   └── es6-promise
│   └── promise
├── escape-html
├── escape-string-regexp
├── etag
├── express
│   ├── lib
│   │   ├── middleware
│   │   └── router
│   └── node_modules
│   ├── cookie
│   ├── depd
│   │   └── lib
│   │   └── compat
│   └── qs
│   ├── lib
│   └── test
├── express-session
│   ├── node_modules
│   │   └── cookie
│   └── session
├── extend
├── extsprintf
│   ├── examples
│   └── lib
├── finalhandler
├── flushwritable
│   ├── lib
│   └── test
├── forever-agent
├── form-data
│   ├── lib
│   └── node_modules
│   └── async
│   ├── dist
│   └── lib
├── forwarded
├── fresh
├── generate-function
├── generate-object-property
├── global
│   └── test
├── graceful-readlink
├── gridfs-stream
│   ├── lib
│   └── test
│   └── fixtures
├── har-validator
│   ├── bin
│   └── lib
│   └── schemas
├── has-ansi
├── has-binary
│   └── fixtures
├── has-binary-data
│   └── fixtures
├── has-cors
├── hawk
│   ├── dist
│   ├── example
│   ├── images
│   ├── lib
│   └── test
├── hoek
│   ├── images
│   ├── lib
│   └── test
│   └── modules
├── hooks-fixed
├── http-errors
├── http-signature
│   └── lib
├── iconv-lite
│   ├── encodings
│   │   └── tables
│   └── lib
├── indexof
├── inherits
├── ipaddr.js
│   ├── lib
│   ├── src
│   └── test
├── isarray
│   └── build
├── is-my-json-valid
│   └── test
│   ├── fixtures
│   └── json-schema-draft4
├── is-property
├── isstream
├── is-typedarray
├── jodid25519
│   └── lib
├── jsbn
├── json3
│   ├── coverage
│   │   └── lcov-report
│   │   └── lib
│   └── lib
├── jsonpointer
├── json-schema
│   ├── draft-00
│   ├── draft-01
│   ├── draft-02
│   ├── draft-03
│   │   └── examples
│   ├── draft-04
│   ├── lib
│   └── test
├── json-stringify-safe
│   └── test
├── jsprim
│   └── lib
├── kareem
│   └── test
├── lodash
│   ├── array
│   ├── chain
│   ├── collection
│   ├── date
│   ├── function
│   ├── internal
│   ├── lang
│   ├── math
│   ├── number
│   ├── object
│   ├── string
│   └── utility
├── media-typer
├── merge-descriptors
├── methods
├── mime
│   └── build
├── mime-db
├── mime-types
├── moment
│   ├── locale
│   └── min
├── mongodb
│   ├── lib
│   │   ├── bulk
│   │   ├── gridfs
│   │   └── gridfs-stream
│   └── test_boot
│   └── data
│   └── diagnostic.data
├── mongodb-core
│   └── lib
│   ├── auth
│   ├── connection
│   ├── tools
│   ├── topologies
│   │   └── strategies
│   └── wireprotocol
├── mongoose
│   ├── examples
│   │   ├── aggregate
│   │   ├── express
│   │   │   └── connection-sharing
│   │   ├── geospatial
│   │   ├── globalschemas
│   │   ├── lean
│   │   ├── mapreduce
│   │   ├── population
│   │   ├── promises
│   │   ├── querybuilder
│   │   ├── replicasets
│   │   ├── schema
│   │   │   └── storing-schemas-as-json
│   │   └── statics
│   ├── lib
│   │   ├── drivers
│   │   │   ├── browser
│   │   │   └── node-mongodb-native
│   │   ├── error
│   │   ├── schema
│   │   │   └── operators
│   │   ├── services
│   │   └── types
│   └── node_modules
│   ├── async
│   │   └── lib
│   └── bson
│   ├── alternate_parsers
│   ├── browser_build
│   ├── lib
│   │   └── bson
│   │   └── parser
│   └── tools
├── mpath
│   ├── lib
│   └── test
├── mpromise
│   ├── lib
│   └── test
├── mquery
│   ├── lib
│   │   └── collection
│   └── test
│   └── collection
├── ms
├── muri
│   ├── lib
│   └── test
├── nan
│   ├── doc
│   └── tools
├── negotiator
│   └── lib
├── node-gcm
│   ├── lib
│   └── node_modules
│   └── debug
│   └── lib
├── node-uuid
│   ├── benchmark
│   ├── bin
│   └── test
├── oauth
│   ├── examples
│   │   └── express-gdata
│   │   └── views
│   ├── lib
│   └── tests
├── oauth-sign
├── object-component
│   └── test
├── object-keys
├── on-finished
├── on-headers
├── options
│   └── lib
├── parsejson
├── parseqs
├── parseuri
├── parseurl
├── passport
│   └── lib
│   ├── errors
│   ├── framework
│   ├── http
│   ├── middleware
│   └── strategies
├── passport-facebook
│   └── lib
│   └── errors
├── passport-local
│   └── lib
├── passport-oauth2
│   └── lib
│   └── errors
├── passport-strategy
│   └── lib
├── password-hash
│   ├── bin
│   ├── lib
│   └── test
├── path-to-regexp
├── pause
├── pinkie
├── pinkie-promise
├── process-nextick-args
├── proxy-addr
├── qs
│   ├── dist
│   ├── lib
│   └── test
├── random-key
├── range-parser
├── raw-body
├── readable-stream
│   └── lib
├── regexp-clone
│   └── test
├── request
│   └── lib
├── send
│   └── node_modules
│   └── depd
│   └── lib
│   └── compat
├── serve-static
├── sliced
│   ├── lib
│   └── test
├── sntp
│   ├── examples
│   ├── lib
│   └── test
├── socket.io
│   ├── lib
│   └── node_modules
│   ├── debug
│   └── ms
├── socket.io-adapter
│   └── node_modules
│   ├── debug
│   ├── ms
│   └── socket.io-parser
│   ├── bench
│   └── node_modules
│   └── debug
│   └── lib
├── socket.io-client
│   ├── lib
│   └── node_modules
│   └── debug
│   └── lib
├── socket.io-parser
│   ├── bench
│   └── node_modules
│   └── debug
│   └── lib
├── sshpk
│   ├── bin
│   ├── lib
│   │   └── formats
│   └── node_modules
│   └── assert-plus
├── statuses
├── string_decoder
├── stringstream
├── strip-ansi
├── supports-color
├── to-array
├── tough-cookie
│   └── lib
├── tunnel-agent
├── tweetnacl
├── type-is
├── uid2
├── uid-safe
├── ultron
├── unpipe
├── utf8
│   └── tests
├── utf-8-validate
│   ├── build
│   │   └── Release
│   │   └── obj.target
│   │   └── validation
│   │   └── src
│   └── src
├── util-deprecate
├── utils-merge
├── vary
├── verror
│   ├── examples
│   ├── lib
│   └── tests
├── ws
│   └── lib
├── xmlhttprequest
│   ├── example
│   ├── lib
│   └── tests
└── xtend
and this my package.json
{
"name": "my-api",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"async": "^0.9.0",
"body-parser": "^1.12.0",
"cookie-parser": "^1.3.4",
"express": "latest",
"express-session": "^1.11.1",
"gridfs-stream": "latest",
"moment": "^2.10.6",
"mongoose": "latest",
"node-gcm": "latest",
"passport": "^0.2.1",
"passport-facebook": "latest",
"passport-local": "latest",
"password-hash": "^1.2.2",
"random-key": "^0.3.2",
"socket.io": "^1.3.5",
"connect-mongodb-session" : "latest"
}
}
What is wrong with it? My friend had the same project but in his node_modules only the folders mentioned in package.json are created.
They're dependencies of dependencies -
Example:
You have a dependency on express.
This in turn, has dependencies on several packages
Each of these have dependencies, on so on...
When you npm install the whole dependency graph needs to be downloaded into your node_modules folder
A nice itneractive tool for visualising the dependency graph of express is http://npm.anvaka.com/#/view/2d/express

Resources