@@ -98,7 +98,7 @@ static inline int install_packages(list_t *list, const char *dir, int verbose) {
9898 registry_package_ptr_t package_info = registry_manager_find_package (registries , package_id );
9999 if (!package_info ) {
100100 logger_error ("package-installer" , "Package %s not found in any registry." , package_id );
101- return -1 ;
101+ goto loop_cleanup ;
102102 }
103103
104104 pkg = clib_package_new_from_slug_and_url (slug , registry_package_get_href (package_info ), verbose );
@@ -112,6 +112,7 @@ static inline int install_packages(list_t *list, const char *dir, int verbose) {
112112 error = 0 ;
113113
114114 loop_cleanup :
115+ free (package_id );
115116 if (slug )
116117 free (slug );
117118 if (error ) {
@@ -300,7 +301,6 @@ int clib_package_install(clib_package_t *pkg, const char *dir, int verbose) {
300301 char * package_json = NULL ;
301302 char * pkg_dir = NULL ;
302303 char * command = NULL ;
303- int pending = 0 ;
304304 int rc = 0 ;
305305 int i = 0 ;
306306
@@ -485,41 +485,25 @@ int clib_package_install(clib_package_t *pkg, const char *dir, int verbose) {
485485
486486 iterator = list_iterator_new (pkg -> src , LIST_HEAD );
487487 list_node_t * source ;
488- repository_file_handle_t * handles = malloc (pkg -> src -> len * sizeof (repository_file_handle_t ));
488+ repository_file_handle_t * handles = malloc (max * sizeof (repository_file_handle_t ));
489+ char * package_id = clib_package_get_id (pkg -> author , pkg -> repo_name );
490+ // TODO, refactor this.
489491 while ((source = list_iterator_next (iterator ))) {
490- handles [i ] = repository_download_package_file (pkg -> url , clib_package_get_id (pkg -> author , pkg -> repo_name ), pkg -> version , source -> val , pkg_dir );
491-
492+ handles [i ] = repository_download_package_file (pkg -> url , package_id , pkg -> version , source -> val , pkg_dir );
492493 if (handles [i ] == NULL ) {
493494 list_iterator_destroy (iterator );
494495 iterator = NULL ;
495496 rc = -1 ;
496497 goto cleanup ;
497498 }
498499
499- #if defined(__unix__ ) || (defined(__APPLE__ ) && defined(__MACH__ ))
500- struct timespec ts = {0 , 1000 * 1000 * 10 };
501- nanosleep (& ts , NULL );
502- #endif
503-
504500#ifdef HAVE_PTHREADS
505- if (i < 0 ) {
506- i = 0 ;
507- }
508-
509- (void ) pending ++ ;
510-
511501 if (i < max ) {
512- ( void ) i ++ ;
502+ i ++ ;
513503 } else {
514504 while (-- i >= 0 ) {
515505 repository_file_finish_download (handles [i ]);
516506 repository_file_free (handles [i ]);
517- (void ) pending -- ;
518-
519- #if defined(__unix__ ) || (defined(__APPLE__ ) && defined(__MACH__ ))
520- struct timespec ts = {0 , 1000 * 1000 * 10 };
521- nanosleep (& ts , NULL );
522- #endif
523507 }
524508 }
525509#endif
@@ -528,8 +512,6 @@ int clib_package_install(clib_package_t *pkg, const char *dir, int verbose) {
528512#ifdef HAVE_PTHREADS
529513 while (-- i >= 0 ) {
530514 repository_file_finish_download (handles [i ]);
531-
532- (void ) pending -- ;
533515 repository_file_free (handles [i ]);
534516 }
535517#endif
0 commit comments