Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

使用pkgs --update 下载解压zip文件是解析会出现错误

Abierto
#215 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
45/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Estancado
Stack tecnológico
python
Área
cli, tooling

Línea de trabajo

Comience en handle_zip_package e inspeccione cómo se usa zipfile.ZipFile.namelist() para determinar package_folder_name, incluida la conversión de rutas de Windows. Reproduzca el problema con pkgs --update y v2.5.0_for_rtthread.zip y, a continuación, verifique que las rutas de extracción y de la base de datos incluyan el contenido completo del paquete en lugar de solo .github/workflows/.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

例如:
解压v2.5.0_for_rtthread.zip 时找到的第一个文件是littlefs-refs-tags-v2.5.0_for_rtthread.github\workflows\下面的文件

def handle_zip_package 中
package_folder_name = os.path.split(right_path)[0]
package_folder_name 就成了littlefs-refs-tags-v2.5.0_for_rtthread.github\workflows
所以最终解压的内容经过cp就只有.github\workflows\ 下的文件

是否改成这样,找第一个item, 因为第一个itme永远是压缩包本身的文件夹
def handle_zip_package(archive_filename, bsp_package_path, package_name, package_info):
package_version = package_info['ver']
package_temp_path = os.path.join(bsp_package_path, "package_temp")

try:
    if remove_folder(package_temp_path):
        os.makedirs(package_temp_path)
except Exception as e:
    logging.warning('Error message : {0}'.format(e))

logging.info("BSP packages path {0}".format(bsp_package_path))
logging.info("BSP package temp path: {0}".format(package_temp_path))
logging.info("archive filename : {0}".format(archive_filename))

try:
    flag = True
    package_folder_name = ""
    package_name_with_version = ""
    arch = zipfile.ZipFile(archive_filename, "r")
    for item in arch.namelist():
        arch.extract(item, package_temp_path)
        if is_windows():
            right_path = item.replace('/', '\\')
        else:
            right_path = item
        # Gets the folder name and changed folder name only once
        if flag:
            package_folder_name = os.path.split(right_path)[0]
            package_name_with_version = package_name + '-' + package_version
            flag = False
        if not os.path.isdir(os.path.join(package_temp_path, item)):
            right_name_to_db = right_path.replace(package_folder_name, package_name_with_version, 1)
            right_path = os.path.join("package_temp", right_path)
            pkgsdb.save_to_database(right_name_to_db, archive_filename, right_path)
    arch.close()

    if not move_package_to_bsp_packages(package_folder_name, package_name, package_temp_path, package_version,
                                        bsp_package_path):
        return False
except Exception as e:
    logging.warning('unpack error message : {0}'.format(e))
    logging.warning('unpack {0} failed'.format(os.path.basename(archive_filename)))
    # remove temp folder and archive file
    remove_folder(package_temp_path)
    os.remove(archive_filename)
    return False

return True
Lenguaje dominante
Python
Estrellas
78
Forks
64
Merge medio
1 d 2 h
PR fusionados (30 d)
7

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de RT-Thread/env

Todos los issues de RT-Thread/env

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.