fix --list-devices (still buggy, but works!)
This commit is contained in:
		
							
								
								
									
										181
									
								
								software/build-scripts/infnoise-gitian.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										181
									
								
								software/build-scripts/infnoise-gitian.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,181 @@ | ||||
| xy--- | ||||
| name: "infnoise-linux-dev" | ||||
| enable_cache: true | ||||
| suites: | ||||
| - "bionic" | ||||
| architectures: | ||||
| - "amd64" | ||||
| packages: | ||||
| - "g++-aarch64-linux-gnu" | ||||
| - "g++-7-aarch64-linux-gnu" | ||||
| - "gcc-7-aarch64-linux-gnu" | ||||
| - "binutils-aarch64-linux-gnu" | ||||
| - "g++-arm-linux-gnueabihf" | ||||
| - "g++-7-arm-linux-gnueabihf" | ||||
| - "gcc-7-arm-linux-gnueabihf" | ||||
| - "binutils-arm-linux-gnueabihf" | ||||
| - "g++-7-multilib" | ||||
| - "gcc-7-multilib" | ||||
| - "binutils-gold" | ||||
| - "git" | ||||
| - "pkg-config" | ||||
| - "faketime" | ||||
| - "bsdmainutils" | ||||
| - "ca-certificates" | ||||
| - "python" | ||||
| - "libftdi-dev" | ||||
| remotes: | ||||
| - "url": "https://github.com/13-37-org/infnoise" | ||||
|   "dir": "infnoise" | ||||
| files: [] | ||||
| script: | | ||||
|   WRAP_DIR=$HOME/wrapped | ||||
|   HOSTS="i686-pc-linux-gnu x86_64-linux-gnu arm-linux-gnueabihf aarch64-linux-gnu" | ||||
|   CONFIGFLAGS="--enable-glibc-back-compat --enable-reduce-exports --disable-bench --disable-gui-tests" | ||||
|   FAKETIME_HOST_PROGS="" | ||||
|   FAKETIME_PROGS="date ar ranlib nm" | ||||
|   HOST_CFLAGS="-O2 -g" | ||||
|   HOST_CXXFLAGS="-O2 -g" | ||||
|   HOST_LDFLAGS=-static-libstdc++ | ||||
|   export QT_RCC_TEST=1 | ||||
|   export GZIP="-9n" | ||||
|   export TAR_OPTIONS="--mtime="$REFERENCE_DATE\\\ $REFERENCE_TIME"" | ||||
|   export TZ="UTC" | ||||
|   export BUILD_DIR=`pwd` | ||||
|   mkdir -p ${WRAP_DIR} | ||||
|   if test -n "$GBUILD_CACHE_ENABLED"; then | ||||
|     export SOURCES_PATH=${GBUILD_COMMON_CACHE} | ||||
|     export BASE_CACHE=${GBUILD_PACKAGE_CACHE} | ||||
|     mkdir -p ${BASE_CACHE} ${SOURCES_PATH} | ||||
|   fi | ||||
|   function create_global_faketime_wrappers { | ||||
|   for prog in ${FAKETIME_PROGS}; do | ||||
|     echo '#!/usr/bin/env bash' > ${WRAP_DIR}/${prog} | ||||
|     echo "REAL=\`which -a ${prog} | grep -v ${WRAP_DIR}/${prog} | head -1\`" >> ${WRAP_DIR}/${prog} | ||||
|     echo 'export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${prog} | ||||
|     echo "export FAKETIME=\"$1\"" >> ${WRAP_DIR}/${prog} | ||||
|     echo "\$REAL \$@" >> $WRAP_DIR/${prog} | ||||
|     chmod +x ${WRAP_DIR}/${prog} | ||||
|   done | ||||
|   } | ||||
|   function create_per-host_faketime_wrappers { | ||||
|   for i in $HOSTS; do | ||||
|     for prog in ${FAKETIME_HOST_PROGS}; do | ||||
|         echo '#!/usr/bin/env bash' > ${WRAP_DIR}/${i}-${prog} | ||||
|         echo "REAL=\`which -a ${i}-${prog} | grep -v ${WRAP_DIR}/${i}-${prog} | head -1\`" >> ${WRAP_DIR}/${i}-${prog} | ||||
|         echo 'export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${i}-${prog} | ||||
|         echo "export FAKETIME=\"$1\"" >> ${WRAP_DIR}/${i}-${prog} | ||||
|         echo "\$REAL \$@" >> $WRAP_DIR/${i}-${prog} | ||||
|         chmod +x ${WRAP_DIR}/${i}-${prog} | ||||
|     done | ||||
|   done | ||||
|   } | ||||
|   # Faketime for depends so intermediate results are comparable | ||||
|   export PATH_orig=${PATH} | ||||
|   create_global_faketime_wrappers "2000-01-01 12:00:00" | ||||
|   create_per-host_faketime_wrappers "2000-01-01 12:00:00" | ||||
|   export PATH=${WRAP_DIR}:${PATH} | ||||
|   EXTRA_INCLUDES_BASE=$WRAP_DIR/extra_includes | ||||
|   mkdir -p $EXTRA_INCLUDES_BASE | ||||
|   # x86 needs /usr/include/i386-linux-gnu/asm pointed to /usr/include/x86_64-linux-gnu/asm, | ||||
|   # but we can't write there. Instead, create a link here and force it to be included in the | ||||
|   # search paths by wrapping gcc/g++. | ||||
|   mkdir -p $EXTRA_INCLUDES_BASE/i686-pc-linux-gnu | ||||
|   rm -f $WRAP_DIR/extra_includes/i686-pc-linux-gnu/asm | ||||
|   ln -s /usr/include/x86_64-linux-gnu/asm $EXTRA_INCLUDES_BASE/i686-pc-linux-gnu/asm | ||||
|   for prog in gcc g++; do | ||||
|   rm -f ${WRAP_DIR}/${prog} | ||||
|  | ||||
|   cat << EOF > ${WRAP_DIR}/${prog} | ||||
|   #!/usr/bin/env bash | ||||
|   REAL="`which -a ${prog} | grep -v ${WRAP_DIR}/${prog} | head -1`" | ||||
|   for var in "\$@" | ||||
|   do | ||||
|     if [ "\$var" = "-m32" ]; then | ||||
|       export C_INCLUDE_PATH="$EXTRA_INCLUDES_BASE/i686-pc-linux-gnu" | ||||
|       export CPLUS_INCLUDE_PATH="$EXTRA_INCLUDES_BASE/i686-pc-linux-gnu" | ||||
|       break | ||||
|     fi | ||||
|   done | ||||
|   \$REAL \$@ | ||||
|   EOF | ||||
|  | ||||
|   chmod +x ${WRAP_DIR}/${prog} | ||||
|   done | ||||
|   cd infnoise/software | ||||
|  | ||||
|   BASEPREFIX=`pwd`/depends | ||||
|  | ||||
|   # Build dependencies for each host | ||||
|   for i in $HOSTS; do | ||||
|     EXTRA_INCLUDES="$EXTRA_INCLUDES_BASE/$i" | ||||
|     if [ -d "$EXTRA_INCLUDES" ]; then | ||||
|       export HOST_ID_SALT="$EXTRA_INCLUDES" | ||||
|     fi | ||||
|     make ${MAKEOPTS} -C ${BASEPREFIX} HOST="${i}" | ||||
|     unset HOST_ID_SALT | ||||
|   done | ||||
|  | ||||
|   # Faketime for binaries | ||||
|   export PATH=${PATH_orig} | ||||
|   create_global_faketime_wrappers "${REFERENCE_DATETIME}" | ||||
|   create_per-host_faketime_wrappers "${REFERENCE_DATETIME}" | ||||
|   export PATH=${WRAP_DIR}:${PATH} | ||||
|  | ||||
|   # Create the release tarball using (arbitrarily) the first host | ||||
|   ./autogen.sh | ||||
|   CONFIG_SITE=${BASEPREFIX}/`echo "${HOSTS}" | awk '{print $1;}'`/share/config.site ./configure --prefix=/ | ||||
|   make dist | ||||
|   SOURCEDIST=`echo bitcoin-*.tar.gz` | ||||
|   DISTNAME=`echo ${SOURCEDIST} | sed 's/.tar.*//'` | ||||
|   # Correct tar file order | ||||
|   mkdir -p temp | ||||
|   pushd temp | ||||
|   tar xf ../$SOURCEDIST | ||||
|   find infnoise-* | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ../$SOURCEDIST | ||||
|   popd | ||||
|   # Workaround for tarball not building with the bare tag version (prep) | ||||
|   make -C src obj/build.h | ||||
|   ORIGPATH="$PATH" | ||||
|  | ||||
|   # Extract the release tarball into a dir for each host and build | ||||
|   for i in ${HOSTS}; do | ||||
|     export PATH=${BASEPREFIX}/${i}/native/bin:${ORIGPATH} | ||||
|     mkdir -p distsrc-${i} | ||||
|     cd distsrc-${i} | ||||
|     INSTALLPATH=`pwd`/installed/${DISTNAME} | ||||
|     mkdir -p ${INSTALLPATH} | ||||
|     tar --strip-components=1 -xf ../$SOURCEDIST | ||||
|  | ||||
|     # Workaround for tarball not building with the bare tag version | ||||
|     echo '#!/bin/true' >share/genbuild.sh | ||||
|     mkdir src/obj | ||||
|     cp ../src/obj/build.h src/obj/ | ||||
|  | ||||
|     CONFIG_SITE=${BASEPREFIX}/${i}/share/config.site ./configure --prefix=/ --disable-ccache --disable-maintainer-mode --disable-dependency-tracking ${CONFIGFLAGS} CFLAGS="${HOST_CFLAGS}" CXXFLAGS="${HOST_CXXFLAGS}" LDFLAGS="${HOST_LDFLAGS}" | ||||
|     make ${MAKEOPTS} | ||||
|     make ${MAKEOPTS} -C src check-security | ||||
|  | ||||
|     #TODO: This is a quick hack that disables symbol checking for arm. | ||||
|     #      Instead, we should investigate why these are popping up. | ||||
|     #      For aarch64, we'll need to bump up the min GLIBC version, as the abi | ||||
|     #      support wasn't introduced until 2.17. | ||||
|     case $i in | ||||
|        aarch64-*) : ;; | ||||
|        arm-*) : ;; | ||||
|        *) make ${MAKEOPTS} -C src check-symbols ;; | ||||
|     esac | ||||
|     make install DESTDIR=${INSTALLPATH} | ||||
|     cd installed | ||||
|     find . -name "lib*.la" -delete | ||||
|     find . -name "lib*.a" -delete | ||||
|     rm -rf ${DISTNAME}/lib/pkgconfig | ||||
|     find ${DISTNAME}/bin -type f -executable -exec ../contrib/devtools/split-debug.sh {} {} {}.dbg \; | ||||
|     find ${DISTNAME}/lib -type f -exec ../contrib/devtools/split-debug.sh {} {} {}.dbg \; | ||||
|     find ${DISTNAME} -not -name "*.dbg" | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ${OUTDIR}/${DISTNAME}-${i}.tar.gz | ||||
|     find ${DISTNAME} -name "*.dbg" | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ${OUTDIR}/${DISTNAME}-${i}-debug.tar.gz | ||||
|     cd ../../ | ||||
|     rm -rf distsrc-${i} | ||||
|   done | ||||
|   mkdir -p $OUTDIR/src | ||||
|   mv $SOURCEDIST $OUTDIR/src | ||||
| @@ -225,15 +225,18 @@ int main(int argc, char **argv) { | ||||
|     char *message = "no data?"; | ||||
|     bool errorFlag = false; | ||||
|     if (opts.listDevices) { | ||||
|  | ||||
|         devlist_node devlist = listUSBDevices(&message); | ||||
|         devlist_node curdev; | ||||
|         if (devlist == NULL) { | ||||
|             fprintf(stderr, "Error: %s\n", message); | ||||
|             return 1; | ||||
|         } | ||||
|         devlist_node curdev = NULL; | ||||
|         uint8_t i=0; | ||||
|         for (curdev = devlist; curdev != NULL;i++) { | ||||
|                 printf("Manufacturer: %s, Description: %s, Serial: %s\n", curdev->manufacturer, curdev->description, | ||||
|                 curdev->serial); | ||||
|         for (curdev = devlist; curdev != NULL; i++) { | ||||
|                 printf("ID: %i, Manufacturer: %s, Description: %s, Serial: %s\n", curdev->id, curdev->manufacturer, curdev->description, curdev->serial); | ||||
|                 curdev = curdev->next; | ||||
|         } | ||||
|         //fputs(message, stdout); // TODO: iterate through infnoise_devlist and print stuff | ||||
|         return 0; | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -211,50 +211,37 @@ devlist_node listUSBDevices(char **message) { | ||||
|  | ||||
| 	// search devices | ||||
|     int rc = ftdi_usb_find_all(&ftdic, &devlist, INFNOISE_VENDOR_ID, INFNOISE_PRODUCT_ID); | ||||
|  | ||||
|     if (rc < 0) { | ||||
|         if (!isSuperUser()) { | ||||
|             *message = "Can't find Infinite Noise Multiplier.  Try running as super user?"; | ||||
|         } else { | ||||
|             *message = "Can't find Infinite Noise Multiplier"; | ||||
|             *message = "Can't find Infinite Noise Multiplier."; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     devlist_node return_list =NULL; | ||||
|     devlist_node *current_entry =NULL; | ||||
|     devlist_node return_list = malloc(sizeof(struct infnoise_devlist_node)); | ||||
|     devlist_node current_entry = return_list; | ||||
|  | ||||
|     for (curdev = devlist; curdev != NULL; i++) { | ||||
|         if (return_list == NULL) { | ||||
|             return_list = (devlist_node) malloc(sizeof(struct infnoise_devlist_node)); | ||||
|             return_list->id = i; | ||||
|             return_list->serial = serial; | ||||
|             return_list->manufacturer = manufacturer; | ||||
|             return_list->description = description; | ||||
|             *current_entry = return_list; | ||||
|         } else { | ||||
|             (*current_entry)->next = (devlist_node) malloc(sizeof(struct infnoise_devlist_node)); | ||||
|             *current_entry = (*current_entry)->next; | ||||
|             (*current_entry)->id = i; | ||||
|             (*current_entry)->serial = serial; | ||||
|             (*current_entry)->manufacturer = manufacturer; | ||||
|             (*current_entry)->description = description; | ||||
|         } | ||||
|  | ||||
|         rc = ftdi_usb_get_strings(&ftdic, curdev->dev, manufacturer, 128, description, 128, serial, 128); | ||||
|         if (rc < 0) { | ||||
|             if (!isSuperUser()) { | ||||
|                 *message = "Can't find Infinite Noise Multiplier. Try running as super user?"; | ||||
|                 return return_list; | ||||
|                 return NULL; | ||||
|             } | ||||
|             //*message = "ftdi_usb_get_strings failed: %d (%s)\n", rc, ftdi_get_error_string(ftdic)); | ||||
|             return return_list; | ||||
|             return NULL; | ||||
|         } | ||||
|         current_entry->id = i; | ||||
|         strcpy(current_entry->serial, serial); | ||||
|         strcpy(current_entry->manufacturer, manufacturer); | ||||
|         strcpy(current_entry->description, description); | ||||
|         current_entry->next = malloc(sizeof(struct infnoise_devlist_node)); | ||||
|         current_entry = current_entry->next; | ||||
|  | ||||
|         // print to stdout | ||||
|         printf("debug: Manufacturer: %s, Description: %s, Serial: %s\n", manufacturer, description, serial); | ||||
|         //printf("debug: Manufacturer: %s, Description: %s, Serial: %s\n", manufacturer, description, serial); | ||||
|         curdev = curdev->next; | ||||
|         //current_node = current_node->next;  // ??? | ||||
|     } | ||||
|     current_entry = NULL; | ||||
|     return return_list; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -23,9 +23,9 @@ struct infnoise_context { | ||||
|  | ||||
| struct infnoise_devlist_node { | ||||
| 	uint8_t id; | ||||
| 	char *manufacturer; | ||||
| 	char *description; | ||||
| 	char *serial; | ||||
| 	char manufacturer[128]; | ||||
| 	char description[129]; | ||||
| 	char serial[128]; | ||||
| 	struct infnoise_devlist_node *next; | ||||
| }; | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user