소프트웨어 패키지는 어떻게 개발합니까?

16826 단어
정의: RT Thread 패키지는 RT Thread IoT 운영 체제에서 실행됩니다.서로 다른 응용 프로그램 영역을 위한 다양한 종류의 패키지를 만들었습니다. 패키지마다 설명 정보, 원본 코드, 라이브러리 파일로 구성되어 있습니다.
소프트웨어 패키지를 제작하기 전에 제품 업무 논리와 관련된 코드와 밀접하게 결합되지 않도록 그 기능을 정확하게 정의하여 소프트웨어 패키지의 다기능성을 높여야 한다.
포장은 다음을 포함해야 합니다.
  • 소스 코드 및 문서
  • 포장 인덱스.
  • 예를 들어, Hello 패키지는 다음과 같습니다.
  • Package code and documentation
  • Package Index
  • 패키지 코드와 문서를 구성합니다.


    패키지를 만들기 전에 sample package documentation 를 읽고 샘플 패키지의 폴더 구조를 확인해야 합니다.
    패키지와 해당 문서에는 다음이 포함되어야 합니다.
  • 필요한 기능을 수행하는 원본 파일
  • 루트 디렉터리에 있는 파일 "Sconscript"는 컴파일러의 소프트웨어 패키지 구축을 지도하는 데 사용됩니다.
  • 소프트웨어 패키지를 사용하는 방법을 설명하는 코드가 포함된 하위 디렉토리 "예제"
  • "git"에서 제어할 수 있는 하위 모듈 디렉터리를 선택할 수 있습니다.
  • 파일 "자술"md는 이 패키지를 간략하게 소개할 것입니다.
  • 하위 디렉터리'docs'는 실현에 대한 상세한 정보를 설명합니다.
  • 다양한 플랫폼에서 실행하는 데 필요한 코드를 포함하는 하위 디렉터리 "port"를 선택할 수 있습니다.
  • 패키지 색인을 만듭니다.


    패키지 인덱스: env\packages 폴더에 저장된 패키지 설명 파일입니다.env\packages\packages\iot\pahomqtt 폴더의 경우 다음과 같습니다.
  • Kconfig: 패키지 버전, 기능 옵션 등 구성 항목을 저장합니다.
  • 가방.json: 패키지 이름, 패키지 소개, 버전별 다운로드 링크 등 정보 저장
  • 색인 생성 마법사 사용


    Env 패키지 인덱스 생성 마법사 기능을 사용하여 패키지 인덱스 파일을 생성할 수 있습니다.다음과 같이 명령pkgs --wizard을 입력합니다.

    생성된 내용은 다음과 같습니다.


    "Sconscript"파일은 원본 코드를 패키지 원본 폴더로 이동하여 원본 코드를 패키지할 때만 사용됩니다.압축 프로세스가 끝난 후에 색인 폴더에 존재할 필요가 없습니다.

    패키지를 수정합니다.json 파일


  • 소포json 파일 설명:
  • {
        "name" : "pahomqtt",
        "description" : "a pahomqtt package for rt-thread",   # Package Description Info
        "keywords" : [
            "pahomqtt"
        ],
        "site" : [
        {
           "version" : "v1.0.0", 
           "URL" : "https://pahomqtt-1.0.0.zip",              # Modify the download address of the compressed package based on its version number.
           "filename" : "pahomqtt-1.0.0.zip",
           "VER_SHA" : "fill in the git version SHA value"    # The compressed package form does not need to be filled in.
        },
        {
           "version" : "latest",                              # latest verison
           "URL" : "https://xxxxx.git",                       # Fill in the Git address
           "filename" : "Null for git package",
           "VER_SHA" : "fill in latest version branch name,such as mater" # Fill in SHA or the branch name.
        }
        ]
    }
    
    파일에는 각 버전을 채울 수 있는 두 가지 유형의 URL 값이 있습니다.

  • Git: Git 저장소 주소 및 해당 SHA 버전입니다.일반적으로 SHA는 RT 스레드master 버전의 경우latest로 설정됩니다.

  • 압축 패키지: 특정 패키지의 다운로드 주소로 SHA를 작성할 필요가 없습니다.
  • 소포json은 패키지 이름, 패키지 설명, 작성자와 원본 코드에 필요한 다운로드 링크를 포함하는 패키지 설명 파일입니다.GPLv2, LGPLv2.1, MIT, Apache license v2.0, BSD 등 응용 허가에 대한 설명을 포함해야 합니다.
    수정된 패키지입니다.json은 다음과 같습니다.
    {
        "name" : "pahomqtt",
        "description" : "Eclipse Paho MQTT C/C++ client for Embedded platforms", # Update the description info.
        "keywords" : [
            "pahomqtt"
        ],
        "site" : [
        {
           "version" : "v1.0.0",                                             # v1.0.0
           "URL" : "https://github.com/RT-Thread-packages/paho-mqtt.git",    # update git address
           "filename" : "paho-mqtt-1.0.0.zip",
           "VER_SHA" : "cff7e82e3a7b33e100106d34d1d6c82e7862e6ab"            # Enter the specified SHA value.
        },
        {
           "version" : "latest",                                             # latest version
           "URL" : "https://github.com/RT-Thread-packages/paho-mqtt.git", 
           "filename" : "paho-mqtt.zip",
           "VER_SHA" : "master"                                              # Enter master 
        }
        ]
    }
    

    Kconfig 파일 수정:


    Kconfig의 내용은 다음과 같습니다.

    패키지 인덱스의 Kconfig 파일은 주로 menuconfig 명령으로 사용되며 패키지의 일부 옵션을 정의해야 합니다. 다음은 주의해야 할 주의사항입니다.
  • 자동으로 생성되는 대부분의 Kconfig 컨텐츠는 필수입니다.옵션의 값은 수정할 수 있지만 삭제할 수 없습니다.
  • 패키지는 RT 라인의 패키지 관리자가 이를 정확하게 식별할 수 있도록 접두사PKG_USING_로 시작하는 구성 항목을 포함해야 합니다.패키지의 이름이 SOFTA라고 가정하면 해당 패키지 옵션은 PKG_USING_SOFTA 이어야 합니다.
  • SOFTA_로 시작하는 구성 항목을 사용하여 이 SOTA 패키지와 관련된 다른 옵션을 정의해야 합니다. 이 구성 항목은 SOFTA_USING_A 또는 SOFTA_ENABLE_A 일 수 있습니다.
  • RT-Thread의 최신 버전을 지원하는 패키지는 특정한 때에 적당한 버전을 놓치지 않도록 최소한 하나의 고정 버전이 필요합니다.
  • 패키지에 추가 구성 항목이 필요한 경우 다른 기존 패키지의 Kconfig 파일을 참조하여 권장 사항을 얻을 수 있습니다.
  • 패키지 업로드


    소프트웨어 패키지는git 또는 기타 다운로드 가능한 사이트에 업로드할 수 있습니다.패키지를 쉽게 업데이트할 수 있도록git 저장소로 저장하는 것을 권장합니다.
    참조 번호: RT-Thread Package Respository

    테스트 패키지


  • 패키지 다운로드: 패키지 인덱스를 env\packages\packages로 복사한 다음 Env에서 온라인으로 패키지를 다운로드하여 다운로드 성공 여부를 테스트합니다.

  • 패키지 기능 테스트: 다운로드 후 명령scons을 실행하여 프로젝트를 다시 컴파일하고 적당한 환경에서 실행하며 패키지 기능이 정상적으로 작동하는지 확인합니다.

  • 패키지 버전 전환:menuconfig에서 패키지 버전을 전환하여 버전 전환 기능이 작동하는지 확인하십시오.
  • 패키지 인덱스 제출


    마지막으로 패키지 인덱스 파일은 PR 프로세스를 통해 RT 스레드 패키지 저장소로 전송해야 합니다: https://github.com/RT-Thread/packages.
    청구서를 제출하려면 HERE 을 클릭합니다.

    패키지 인덱스 소스 관리


    Env는 여러 개의 패키지 소스에서 패키지를 다운로드할 수 있으며 각 소스 패키지 목록은 env\packages 폴더에 저장됩니다.예를 들어, RT 스레드 공식 패키지 목록은 env\packages\packages 폴더 아래에 저장됩니다.

    패키지 소스 추가

  • 정식 RT 스레드 패키지 폴더를 복사하고 폴더 이름을 변경하며 폴더에서 불필요한 패키지 인덱스 파일을 삭제한 다음 필요한 파일을 추가합니다.
  • 폴더 아래의 Kconfig 파일을 업데이트하고 패키지 원본 정보를 Kconfig 파일에 추가합니다.

  • 패키지 소스 제거

  • 소프트웨어 소스 폴더 삭제;
  • Kconfig 파일에서 해당 소스 폴더 정보를 삭제합니다.
  • 새 게시 프로세스


    새 버전의 패키지를 발표하기 전에 다음 절차를 수행해야 합니다.
  • 소프트웨어 패키지를 검사하여 소프트웨어 패키지의 기능이 정상적으로 작동하는지 확인합니다.
  • 관리자에게 새 버전을 게시할 권한이 없으면 Github 게시 기능을 사용하여 새 버전을 게시합니다.새 버전을 게시하는 방법은 paho-mqtt package repository 을 참조하십시오.
  • 로컬 패키지 인덱스 파일을 수정하고 Kconfig 파일과 패키지에 새 정보를 추가합니다.json.
  • 새 버전의 다운로드 및 삭제 기능을 로컬에서 테스트하고 패키지가 프로젝트에 성공적으로 추가될 수 있도록 설치합니다.
  • 패키지 인덱스에 대한 PRhttps://github.com/RT-Thread/packages을 제출하고 관리자에게 이를 통합하라고 통지합니다.
  • RT 스레드 연락처 정보:
    Website | Github | | Facebook |

    좋은 웹페이지 즐겨찾기