Translate

2018년 7월 24일 화요일

꿈의 입력기 nimf 이야기 15화 - PKGBUILD

dasom 원저자이자, nimf 원저자인 김호동 본인이 자신의 창작물을 토대로 PKGBUILD 파일을 작성하였음을 입증합니다.
어떻게 PKGBUILD 파일을 작성했는지에 대한 수정 내역을 잘게 쪼개서 commit 했습니다.
PKGBUILD 에 저작권 정보를 넣는다는게 참 웃긴 일이긴 한데,
그럴 만한 이유가 있으니 비웃지는 말아주세요.

2018.07.25 내용 추가
nimf 프로젝트의 다른 파일들과는 달리, 이제 PKGBUILD 파일은 저작권이 없습니다. 이제 PKGBUILD 는 퍼블릭 도메인에 있습니다.

commit c6fd358553d814a0f912d9454c896ba492e02633
Author: Hodong Kim <cogniti@gmail.com>
Date:   Wed Jul 25 23:20:57 2018 +0900

    Now this PKGBUILD file is in the public domain

커밋 내역은 아래 보시면 되겠습니다.
제가 잠도 못자고 너무 피곤해서 로그를 복사 / 붙여넣기 하면서 누락된게 있을지도 모르겠습니다.

자세한 내역은

https://gitlab.com/nimf-i18n/nimf/commits/master

에 있으니 확인하시기 바랍니다.

commit 90c68ab13b44ee8c46d281763f833654aed429b3
Author: Hodong Kim <cogniti@gmail.com>
Date:   Sun Jul 22 20:58:09 2018 +0900

    I wrote these files myself. But I delete these files because there is misunderstanding.

commit 49e4662d07645de9a5f7bca1a3452d461eaa5df8
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 00:19:37 2018 +0900

    아치리눅스 사이트에서 예제파일 PKGBUILD.proto 을 가져옵니다.
   
    예제 파일 주소는 다음과 같씁니다.
    https://git.archlinux.org/pacman.git/plain/proto/PKGBUILD.proto

commit e7f558cd30105d4819e10927aaf5e671d765eeb2
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 00:24:47 2018 +0900

    파일이름을 PKGBUILD.proto 에서 PKGBUILD 로 변경합니다.

commit 7c85452b67e22e894f60bff796b5221910233736
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 21:12:52 2018 +0900

    주석문 삭제, 저작권 정보 추가, pkgname, license 정보 추가합니다
   
    아치리눅스 nimf-git AUR 에 올릴 것이 아니기 때문에
   
    pkgname=nimf 로 합니다.
   
    Copyright (C) 2018 Hodong Kim <cogniti@gmail.com>
   
    김호동 본인이 작성한 파일이기 때문에 김호동이 저작권을 보유합니다.
    파일 진위 여부 및 미래에 발생될 수 있는 문제에 대비하기 위해 저작권 정보를
    넣습니다.
   
    license=('LGPL3')

commit 040f622ad3b29e2b04ef8e4be1f3db93f26b9bad
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 21:27:12 2018 +0900

    pkgver 을 master 로 변경합니다.
   
    pkgver 은 pkgver() 함수로부터 변경될 수 있습니다.
   
    https://wiki.archlinux.org/index.php/PKGBUILD
    makepkg can automatically update this variable by defining a pkgver()
    function in the PKGBUILD.

commit 1b26ceb61c56b69512c2dcb71a0be3dbf5f49b85
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 21:29:58 2018 +0900

    epoch= 삭제합니다.
   
    https://wiki.archlinux.org/index.php/PKGBUILD 설명에 따르면
   
    When a new version of the software is released, this value must be reset
    to 1. 신버전이 릴리즈될 때, 1 이어야 한다고 되어 있습니다.
    그래서 pkgrel=1 로 그대로 둡니다.
   
    epoch= 는
    설명에 따르면
    pkgver=5.13
    pkgrel=2
    epoch=1
   
    1:5.13-2
    이런식으로 되는 건데 epoch 는 사용할 일이 없으므로 삭제합니다.

commit 130c6198e9191f86a0ea90580e52aabc72165e0e
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 21:33:56 2018 +0900

    pkgdesc="Nimf is an input method framework."
   
    제가 nimf 원저자입니다. 저 문구를 제가 만들었습니다.

commit 241cce44d0a89b0906238d83e252f493d4b715ac
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 21:37:46 2018 +0900

    arch=('any') 로 합니다.
   
    nimf 는 x86_64, i686, arm 에서도 컴파일이 가능합니다.
    https://wiki.archlinux.org/index.php/PKGBUILD 에 따르면
   
    If a package is architecture-independent in its compiled state (shell
    scripts, fonts, themes, many types of extensions, etc.) then use
    arch=('any'). 이렇게 설명되어 있지만,
    arch 를 특정하기 애매하므로 any 로 합니다.

commit c94b9b0cc29f3cb70c39677fdbcef0db7dfa27dd
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 21:39:57 2018 +0900

    url="https://gitlab.com/nimf-i18n/nimf"

commit 3f63dd97f1555aa3b4d482c383ecda4ace5e1296
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 21:41:28 2018 +0900

    groups=() 삭제합니다.
   
    groups=() 항목이 없어도 작동하는데 지장이 없습니다.
    작성하기 귀찮으므로 삭제합니다.

commit 7151baa707ea0a54f796e8c79b46b66180434a4a
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 21:46:28 2018 +0900

    checkdepends=() 삭제합니다.
   
    사용할 일이 없습니다

commit bce5cabc547a7b63ce658b39f1d708d37f74cfe5
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 21:49:55 2018 +0900

    순서를 변경합니다
   
    makedepends=()
    depends=()
    optdepends=()
   
    이런 순서가 되도록 변경합니다.
    변경하지 않아도 작동에는 상관이 없지만,
    저는 제가 작성한 debian/control 파일을 참고하여 만들 것이기 때문에
    debian/control 에 나오는 순서대로 변경합니다

commit 9624ecffe7c81d97009a2bdd7cb926075eacbba3
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 21:52:21 2018 +0900

    makedepends 를 작성합니다.
   
    debian/control 파일내에 Build-Depends 에 대응합니다.
   
    Source: nimf
    Section: utils
    Priority: optional
    Maintainer: Hodong Kim <cogniti@gmail.com>
    Build-Depends: debhelper (>= 9),
                   dh-autoreconf,
                   libglib2.0-dev,
                   pkg-config,
                   intltool (>= 0.50.1),
                   libgtk-3-dev,
                   libgtk-3-bin,
                   libgtk2.0-dev,
                   libqt4-dev,
                   qtbase5-dev,
                   qtbase5-private-dev,
                   libappindicator3-dev,
                   librsvg2-bin,
                   fonts-noto-cjk,
                   libhangul-dev,
                   libanthy-dev,
                   anthy,
                   libchewing3-dev,
                   librime-dev (>= 1.2.9),
                   libxkbcommon-dev (>= 0.5.0),
                   libwayland-dev,
                   wayland-protocols,
                   libaudit-dev
   
    대응되는 아치리눅스 패키지 이름은 https://www.archlinux.org/packages/ 에서 찾을
    수 있습니다.

commit 6ff7b42e07f41b3370d6a08a1c3347d81db84fc9
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 21:57:11 2018 +0900

    depends 를 작성합니다.
   
    여기에 들어갈 내용은
    제가 작성한 configure.ac 파일과
    제가 작성한 debian/control
    제가 지금 작성하고 있는 PKGBUILD 파일 내에 makedepends 내에 있습니다.
    작업의 편의상 makedepends 에 있는 내용 중에, 컴파일할 때만 필요한
    패키지를 없앱니다. 그렇게 하면 실행할 때 필요한 것만 남습니다.
    제가 nimf 원저자입니다.
    nimf 는 제가 만들었고 nimf 가 필요로 하는 라이브러리를
    원저자인 제가 당연히 알고 있습니다.  제가 최초로 작성한 것입니다.

commit 8998e4a7032d4c49527903a7029f079bbf701dfd
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 23:09:24 2018 +0900

    optdepends 내용 추가합니다.
   
    https://wiki.archlinux.org/index.php/PKGBUILD 문서에 따르면
   
    optdepends=('cups: printing support'
                'sane: scanners support'
                'libgphoto2: digital cameras support'
                'alsa-lib: sound support'
                'giflib: GIF images support'
                'libjpeg: JPEG images support'
                'libpng: PNG images support')
   
    이런 식으로 작성하라고 나와 있습니다.
   
    debian/control 에서 Recommends, Suggests 항목에 대응합니다.
    없어도 nimf 가 작동하는데, 있으면 좋은 패키지입니다.
   
    optdepends=('brise: Rime schema repository'
                'noto-fonts-cjk: Google Noto CJK fonts'
                'xorg-setxkbmap: Set the keyboard using the X Keyboard
    Extension')
    그래서 이렇게 작성을 했습니다.
    brise 패키지는 GPL 라이선스이기 때문에 depends 에 넣으면 안 됩니다.
    nimf 는 LGPL 라이선스이며 brise 없어도 작동합니다.
    gnome-tweaks (gnome-tweak-tool) 가 debian/control 에 있지만,
    nimf-libhangul 에 xkb 옵션을 설정할 수 있는 기능이 있으므로,
    gnome-tweaks 는 필요하지 않습니다.
    제가 깜박하고 debian/control 에서 gnome-tweak-tool 을 삭제하지 않았네요.

commit b5a35acabea66fbfe7071d1d16952928c31b4709
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 23:31:01 2018 +0900

    provides=() conflicts=() replaces=() backup=() options=() install= changelog= 삭제합니다.
   
    provides=()
    conflicts=()
    replaces=()
    backup=()
    options=()
    install=
    changelog=
    없어도 작동합니다. 있으면 업데이트할 때 번거롭기 때문에 삭제합니다.

commit 81d7cabffff25f8e4c6345da4b526079d469e35f
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 23:33:32 2018 +0900

    source 주소를 설정합니다.
   
    source=("https://gitlab.com/nimf-i18n/nimf/-/archive/master/nimf-master.tar.bz2")

commit 1658804af98fcce5dfd313ed376a33336346ede5
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 23:35:25 2018 +0900

    extract=() 삭제합니다.

commit d107d97c3714cad7ac03eb0c8738de3efa89ba27
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 23:37:09 2018 +0900

    md5sums=('SKIP') 체크하지 않습니다.
   
    https://gitlab.com/nimf-i18n/nimf/-/archive/master/nimf-master.tar.bz2
    이 파일은 최신 파일입니다. commit 할 때마다 변경됩니다.
    저는 pkgver 의 버전을 특정하지 않았습니다.
    pkgver 을 특정하면 nimf 를 업데이트할 때마다 PKGBUILD 업데이트해야
    하는데 매우 번거롭기 때문에 pkgver 을 특정하지 않습니다.
    그래서 다이제스트를 스킵합니다.

commit db7494507a1621d05be9fa7b9fa5992bccbd18dc
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 23:40:16 2018 +0900

    validpgpkeys=() 불필요하여 삭제합니다.

commit 6eca529bb7613fbc849470f7c056a9ae40cdf692
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 23:42:21 2018 +0900

    pkgver() 추가합니다. 패키지 버전을 동적으로 업데이트 합니다.
   
    https://wiki.archlinux.org/index.php/PKGBUILD 에 따르면
   
    makepkg can automatically update this variable by defining a pkgver()
    function in the PKGBUILD.
    pkgver() 으로 자동으로 pkgver 변수를 업데이트할 수 있다고 나와 있습니다.
   
    grep AC_INIT configure.ac | grep -Po '\d{4}.\d{2}.\d{2}'
   
    정규표현식으로 패키지 버전을 grep 합니다.
    2018.07.20 이런 형식이 grep 됩니다.

commit b49e9ea08fea192b4329c86d5b0579a0fc9897ba
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 23:47:01 2018 +0900

    prepare() 불필요하여 삭제합니다.

commit feb20a6dd2dc11a8284613e39c440752d7f42264
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 23:50:20 2018 +0900

    build() 를 작성합니다.
   
    제가 nimf 원저자이고 제가 작성한 nimf/README 파일에 나와 있습니다.

commit aa2d29b63b5cca4d488bf65c33051ada076bd7c2
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 23:52:33 2018 +0900

    check() 불필요하여 삭제합니다.

commit 5055bc706728252fb6aff7af7d9b90c680c84a9f
Author: Hodong Kim <cogniti@gmail.com>
Date:   Mon Jul 23 23:54:21 2018 +0900

    package() 작성합니다.
   
    제가 nimf 원저자이며 제가 작성한 nimf/README, Makefile.am 에 나와
    있습니다.

commit 15291a7174e416f6a05e6b83bf11919b25c095b5
Author: Hodong Kim <cogniti@gmail.com>
Date:   Tue Jul 24 00:02:50 2018 +0900

    저작권, 라이선스 정보 추가합니다.
   
    본 PKGBUILD 파일은
    dasom 의 원저자이자 nimf 의 원저자인 김호동이 자신의 창작물을 토대로
    https://wiki.archlinux.org/index.php/PKGBUILD 형식에 맞추어
    작성한 파일입니다.
    본 PKGBUILD 파일에 대한 저작권이 김호동에게 있습니다.

댓글 없음:

댓글 쓰기

응용 어플 끝글자 버그 잡는 거 진짜 개쉽습니다

그 동안 제가 끝글자 버그를 잡지 않고 방치한 이유 우선 책임, 의무가 없습니다. 제가 해당 어플 개발자도 아닐 뿐더러 오픈소스가 원래가 유지보수 의무, 보증 책임이 없습니다 . 이렇게 개떡 같은 게 오픈소스입니다. 전 과거 libhwp 하냐고...