이번에 Apple M1탑재된 MacBook Air를 구입하였습니다.



Apple M1 구입후, 초기 설정을 열심히 하였습니다.


초기 설정후, Xcode와 Homebrew를 설치하여, 소프트웨어 빌드 설정을 하였습니더.

Brew 링크
https://brew.sh/

Homebrew

The Missing Package Manager for macOS (or Linux).

brew.sh

개발 환경 설정을 한후에, 예전에 Intel기반의 Macbook Pro 2013 Late에서 설정했던 LODE를 이용하여 빌드 환경을 설정하였습니다.
https://wiki.documentfoundation.org/Development/lode
빌드 환경 설정이 완료되어서 core (LibreOffice의 빌드 소스) 디렉토리로 이동하여, 다음의 명령어로 빌드를 실행하였습니다.

./autogen.sh --with-locales="ko en-US zh ja" --with-vendor="DaeHyunSung" --disable-werror --with-lang="ko en-US ja zh-TW zh-CN" --enable-dbgutil

그런데, 빌드 설정이 실패하였습니다.

configure: error: in `/Users/sungdaehyun/dev/lode/dev/core':
configure: error: online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided

해당 이슈에 대해서 왜 나오는지 이유를 알 수 없어, 내용을 IRC로 문의를 하니 다음과 같은 답변을 받았습니다.

10:25 PM <dhsung> Hello 
10:25 PM <dhsung> Today, I bought new Apple M1 MacbookAir. So, I prepare autogen option for build. But, I found the message "online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided" What is mean? 
10:26 PM <mst___> either disable those features or use an arbitrary value for the url, it's just shown in a dialog somewhere

답변을 듣고, 구글링을 하고는 빌드 옵션 --disable-breakpad --disable-online-update를 추가하였습니다.

./autogen.sh --with-locales="ko en-US zh ja" --with-vendor="DaeHyunSung" --disable-werror --with-lang="ko en-US ja zh-TW zh-CN" --enable-dbgutil --disable-breakpad --disable-online-update

옵션 추가 후, 빌드 설정이 완료됨을 나왔습니다.


To build, run:
/Users/****/dev/lode/opt/bin/make

To view some help, run:
/Users/****/dev/lode/opt/bin/make help

After the build has finished successfully, you can immediately run what you built using the command:
open instdir/LibreOfficeDev.app

If you want to run the smoketest, run:
/Users/****/dev/lode/opt/bin/make check

HOST config (config.warn)
*************************************
* WARNING : Cannot find Clang headers to build compiler plugins, plugins disabled.

이후에 make로 빌드를 실행하였습니다.

Apple M1에서 빌드가 완료되고, 다음과 같이 빌드 완료된 프로그램 실행을 해보았습니다.

open instdir/LibreOfficeDev.app

실행이 아주 잘됩니다!

여기까지, Apple M1에서 LibreOffice(리브레오피스) 빌드 및 실행해보기 기록이였습니다.

Buy me a coffeeBuy me a coffee

올해 10월 동안 열리는 핵토버페스트(Hacktoberfest)행사가 시작되었습니다.

핵토버페스트(Hacktoberfest) 2020 - https://hacktoberfest.digitalocean.com/

핵토버페스트(Hacktoberfest)는 매년 10월 한달동안 열리는 행사이며, 온 세상의 어느 누구든 참여할 수 있는 행사입니다. 

이 행사는 개발자, 학생, 행사 주최자, 여러 규모의 크고 작은 회사 등등 모두가 자유오픈소스 프로젝트의 성장을 돕고, 공동체에 긍정적인 공헌(貢獻)/기여(寄與)/컨트리뷰션(Contribution)을 하도록 촉진하는 행사입니다.

다양한 배경과 기술 숙련도를 가진 모든 이들이 도전 가능하며,  이 글을 작성하는 오늘인 10월 1일부터 10월 31일까지 Github에 호스팅된 공개 저장소/프로젝트에 보내는 풀리퀘스트(Pull Request)에 대해서 인정됩니다.

이 글을 작성하는 저는 올해 열리는 핵토버페스트(Hacktoberfest) 행사에 리브레오피스 우리말 모듬(LibreOffice Korean Team)의 저장소에 자동 교정 내용을 담은 저장소를 추가하였습니다.

github.com/libreoffice-kr/autocorr_kr

 

libreoffice-kr/autocorr_kr

리브레오피스(LibreOffice) 자동 교정(Autocorrect)기능에 대한 말모이 저장소 - libreoffice-kr/autocorr_kr

github.com

올해 열리는 핵토버페스트(Hacktoberfest)에 리브레오피스(LibreOffice)에서 사용하는 우리말 자동 교정 내용 추가하면서 행사 참여를 해보아요!

이번에 리브레오피스 우리말모듬에서는 핵토버페스트(Hacktoberfest)의 행사에 참여하는 분을 위하여, 우리말 자동 교정 저장소를 만들고, 행사 참여할 수 있게 풀리퀘스트(Pull Request)를 전달하면 행사 참여 인정을 할 수 있게 이벤트를 만들었습니다.

 

열심히 자동 교정 내용을 추가하여, 리브레오피스(LibreOffice)의 우리말 사용성 향상에 공헌(貢獻)/기여(寄與)/컨트리뷰션(Contribution)을 해보아요!

Buy me a coffeeBuy me a coffee

리브레오피스(LibreOffice)에 ARM기반 새로운 애플 실리콘(Apple Silicon)의 MacOS빌드 지원 커밋을 확인하였습니다.

앞으로, 애플(Apple)에서 ARM기반 macOS를 탑재한 기기가 나올 경우에 대비하여, 리브레오피스(LibreOffice)가 Arm기반 macOS에 동작할 수 있게 빌드 지원 선작업을 하였군요.

아마도, Intel기반의 MacOS뿐만아니라  Arm기반의 macOS에서도 리브레오피스(LibreOffice)가 지원 될겁니다!

아래는 ARM기반 애플 실리콘(Apple Silicon) CPU상에 동작하는 macOS[arm64-apple-macos]에 대응하는 코드가 추가된 초기 커밋입니다.

https://git.libreoffice.org/core/+/baab4f890c8ac99d1b8dab5790fbb7ab949100ab%5E%21

 

Diff - baab4f890c8ac99d1b8dab5790fbb7ab949100ab^! - core - Gitiles

commitbaab4f890c8ac99d1b8dab5790fbb7ab949100ab[log]

git.libreoffice.org

 

Buy me a coffeeBuy me a coffee

리브레오피스(LibreOffice)에 소스코드 제출을 위한 gerrit설정 및 제출 정리

리브레오피스(LibreOffice) Gerrit 소스코드 리뷰 시스템 설정

리브레오피스(LibreOffice)의 Gerrit은 문서재단의 인증을 위한 싱글 사인온(Single Sign-On)서비스를 사용하고 있습니다.

우선, Gerrit사용을 위한 계정을 생성 Create an account

참고: LibreOffice Wiki - Setting yourself up for gerrit

개인 컴퓨터에 SSH 키를 생성합니다.

SSH생성은 Github의 글을 참조하면 됩니다.
Generating a new SSH key and adding it to the ssh-agent

키생성은 아래와 같습니다

$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

이후, gerrit시스템에 등록된 userid를 확인후, gerrit시스템에 SSH Key 설정 등록을합니다.

다음의 명령어로 키 조회후 gerrit시스템에 SSH Key 설정 등록하면 됩니다.

$ cat ~/.ssh/id_rsa.pub

gerrit에 SSH키 등록을 하였으면 ${HOME}/.ssh/config 파일 생성하거나 아님 기존 파일이 있으면 기존 파일에 에 아래와 같이 내용을 추가합니다

 Host logerrit gerrit.libreoffice.org
       IdentityFile /path/to/your/private-key
       User YOUR_USERNAME_HERE
       Port 29418
       HostName gerrit.libreoffice.org

IdentityFile 속성에는 생성한 ${HOME}/.ssh/id_rsa를넣으면 됩니다. User 속성에는 gerrit에 등록된 id를 넣습니다.

이후, logerrit 실행을 해봅니다

$ ./logerrit test
There seems to be trouble. Please have the output of:
ssh -vvvv logerrit
at hand when looking for help.

일단 실행해보니, 우선 ssh -vvvv logerrit을 실행하라는군요

아래와 같이 실행해봅니다.

$ ssh -vvvv logerrit

테스트가 성공하면, SSH키에 대한 비밀번호 입력하라고 나오고, 입력이 완료되면 아래와 같은 메세지를 확인할 수 있습니다

  ****    Welcome to Gerrit Code Review    ****

  Hi {Your Name}, you have successfully connected over SSH.

  Unfortunately, interactive shells are disabled.
  To clone a hosted Git repository, use:

  git clone ssh://{your user id}@gerrit.libreoffice.org:29418/REPOSITORY_NAME.git

debug2: channel 0: written 292 to efd 6
debug3: send packet: type 1
debug1: channel 0: free: client-session, nchannels 1
debug3: channel 0: status: The following connections are open:
  #0 client-session (t4 r0 i0/0 o0/0 e[write]/0 fd 4/5/6 sock -1 cc -1)

debug3: fd 1 is not O_NONBLOCK
Connection to gerrit.libreoffice.org closed by remote host.
Connection to gerrit.libreoffice.org closed.
Transferred: sent 3928, received 2040 bytes, in 9.5 seconds
Bytes per second: sent 415.1, received 215.6
debug1: Exit status -1

이제, logerrit이 제대로 실행되는지 확인해봅니다

$ ./logerrit test
Enter passphrase for key '/home/${HOME}/.ssh/id_rsa':
Your gerrit setup was successful!

gerrit시스템 설정이 제대로 되었으면 위와 같이 나옵니다.

소스 커밋하기

저장소에 수정한 내용을 git commit으로 커밋합니다.

커밋한 소스코드를 리브레오피스 gerrit 소스코드 리뷰시스템에 전달하기

커밋된 내용을 저장소에 적용을 하기 위해서, gerrit소스코드 리뷰 시스템에 이제 전달해야겠죠?

이제, logerrit을 이용하여 gerrit 코드 리뷰시스템에 커밋한 소스코드를 제출합니다.

$ ./logerrit submit master
Enter passphrase for key '/home/${HOME}/.ssh/id_rsa':
오브젝트 나열하는 중: 96, 완료.
오브젝트 개수 세는 중: 100% (96/96), 완료.
Delta compression using up to 4 threads
오브젝트 압축하는 중: 100% (50/50), 완료.
오브젝트 쓰는 중: 100% (57/57), 8.84 KiB | 55.00 KiB/s, 완료.
Total 57 (delta 45), reused 16 (delta 5), pack-reused 0
remote: Resolving deltas: 100% (45/45)
remote: Counting objects: 119475, done
remote: Processing changes: refs: 1, new: 1, done
remote: commit 6821939: warning: subject >50 characters; use shorter first paragraph
remote:
remote: SUCCESS
remote:
remote:   https://gerrit.libreoffice.org/c/core/+/97344 Hardcode script for "Noto" CJK fonts & add USCRIPT_JAMO [NEW]
remote:
To ssh://logerrit/core
 * [new branch]                HEAD -> refs/for/master

이제, LibreOffice의 gerrit 코드 리뷰 시스템 설정 및 소스코드 제출 방법을 확인해보았습니다.

Buy me a coffeeBuy me a coffee

2020년 오픈수세+리브레오피스 연합 컨퍼런스는 온라인으로 진행될 예정입니다.

이번 2020년도에 독일🇩🇪 뉘렌베르크에 열릴 예정이였던 오픈수세+리브레오피스 연합 컨퍼런스(openSUSE + LibreOffice Conference 2020)은 온라인으로 10월 15일부터 17일까지 열릴 예정입니다.

상세 영문 원문은 아래 내용을 참조하시기 바랍니다.

openSUSE + LibreOffice Conference 2020 Will Take Place Online

openSUSE + LibreOffice Conference 2020 Will Take Place Online - The Document Foundation Blog

 

openSUSE + LibreOffice Conference 2020 Will Take Place Online - The Document Foundation Blog

Organizers of the openSUSE + LibreOffice Conference, along with the project’s boards, have made the decision to change the conference to an online conference. The uncertainty surrounding the COVID-19 pandemic and its effect on travel, conference planning

blog.documentfoundation.org

openSUSE + LibreOffice Conference Update

openSUSE + LibreOffice Conference Update - The Document Foundation Blog

 

openSUSE + LibreOffice Conference Update - The Document Foundation Blog

The organisers of the openSUSE + LibreOffice Conference have slightly adjusted the conference dates, from the original of October 13 – 16 to the new dates of October 15 – 17. The new dates are Thursday through to Saturday. Participants can submit talks

blog.documentfoundation.org

2020년 오픈수세+리브레오피스 연합 컨퍼런스는 온라인으로 진행될 예정입니다.

 

 

오픈수세(openSUSE)와 리브레오피스(LibreOffice) 각각 프로젝트의 위원회 임원을 포함한 오픈수세 + 리브레오피스 컨퍼런스(openSUSE + LibreOffice Conference)의 조직위원회는 이번에 열릴 컨퍼런스를 온라인 컨퍼런스로 열기로 결정하였습니다.

코로나-19(COVID-19) 전염병 대유행에 둘러싼 불확실성과 이 대유행으로 여행, 컨퍼런스 계획, 물류 및 참석자들이 행사에 올 가능성에 대한 영향으로 실제 오프라인 컨퍼런스 행사를 온라인 행사로 변경을 하게 되었습니다.

이 컨퍼런스를 온라인으로 변경하는 것은 좋은 소식이며, 행사주최를 하는 사람들은 행사 기간 동안 사교 활동을 원하는 사람들을 위한 통찰력 있는 발표, 기술적인 프레젠테이션 및 회의로 가득찬 훌륭한 컨퍼런스를 제공하려고 생각하고 있습니다. 비디오 컨퍼런스 도구를 이용하여, 참석자들은 오픈수세(openSUSE)와 리브레오피스(LbreOffice)의 신 기술을 배우고 개발자와 채팅으로 질문할 기회를 갖게 됩니다. 마케팅(Marketing), 디자인(Design), QA 및 기타 주제과 관련된 커뮤니티는 온라인으로 만나 아이디어를 포착하고 교환할 수 있습니다.

발표제안(Call for Papers; CfP)는 7월 21일까지 발표를 계속 제출할수 있습니다. 발표제안(CfP)의 제출은 https://events.opensuse.org 의오픈소스 이벤트 관리자(OSEM; Open Source Event Manager) 인스턴스에서 계속 진행됩니다. 제출물 모음은 OSEM도구로 구성하지만, 온라인 행사는 최근에 openSUSE Virtual Summit —  https://opensuse.reqmagic.com 에서 사용된 것과 같은 다른 웹사이트에서 진행됩니다. 이 플랫폼은 파이어폭스(Firefox), 크로미움(Chromium) 및 여러 오픈소스 브라우저에서 동작합니다. 이 소프트웨어는 다양한 API(유투브[YouTube], 돌비[Dolby]등등)을 사용하여 플러그인이 필요 없는 전적으로 HTML5기반의 웹 기반 서비스를 지원합니다. 

컨퍼런스의 일정과 시간 할당에 대한 더 많은 정보는 곧 전달할 예정입니다.

 

트랙(Tracks)

다음은 오픈수세(openSUSE)에 관련한 발표를 제출할때 선택할 수 있는 트랙 목록입니다.

a) 오픈수세(openSUSE)
b) 오픈소스(Open Source)
c) 클라우드와 컨테이너 기술(Cloud and Containers)
d) 임베디드(Embedded)

다음은 리브레오피스(LibreOffice)에 관련한 발표를 제출할때 선택할 수 있는 트랙 목록입니다: 

a) 개발(Development), APIs, Extensions, Future Technology
b) 품질보증(Quality Assurance)
c) 현지화(Localization), 문서화(Documentation), 모국어 프로젝트(Native Language Projects)
d) LibreOffice에 마음을 끌게 하는 것: 사용 편의성, 디자인, 접근성 등
e) 개방 문서 형식(오픈 도큐먼트 포맷, Open Document Format) , 문서 해방(Document Liberation), 호환성 및 상호운용성(Interoperability)
f) LibreOffice의 옹호, 촉진, 홍보, 마케팅

발표는 15분의 짧은 발표(short talk), 30분의 일반 발표(normal talk) 및 60분의 워킹그룹(workgroup session) 세션을 선택할수 있습니다. 조직위원회는 온라인 컨퍼런스 중에 참석자의 참여를 유지하기 위해서 발표를 단축시켜야 한다고 생각했습니다. 이 변경사항은 휴식 시간, 소셜 비디오 세션 및 각각 발표가 끝난 후 질의 응답에 대한 추가 시간에 대한 조정을 하는데 도움이 됩니다.

사용할 라이브 플랫폼을 사용하면 제한된 대역폭으로 접속하는 발표자가, 라이브 발표를 원하지 않는다면, 녹화한 발표를 실행시키는 것을 허용합니다. 발표자는 동영상을 시스템에 내장된 중지, 되감기, 빨리 감기 등으로 제어하는 것이 가능합니다.

 

소규모 회의(Mini-summits)

오픈수세 + 리브레오피스(openSUSE + LibreOffice) 조직위원회는 지역 언어로 회의와 함께 진행할 소규모 온라인 회의를 조직하는 거에 관심이 있는 커뮤니티 회원의 의견을 즉시 듣고 싶습니다. 이 아이디어는 소규모 온라인 회의가 리브레오피스 스페인어 커뮤니티에서 조직하는 정기 월례 행사가 열리는 것 처럼, 커뮤니티의 행사를 조직하는데 기꺼이 도움을 줄 수 있는 커뮤니티를 위해 많은 청중들에게 다가갈수 있을 것입니다. 오픈수세 + 리브레오피스(openSUSE + LibreOffice) 컨퍼런스는 영어로 진행되지만, 소규모 온라인 회의는 지역 언어로 진행할 것입니다.여러 나라의 활발한 커뮤니티에서 사용하는 언어(예를들어, 프랑스어, 독일어, 스페인어)를 사용하는 것에 대한 노력은 모든 자원봉사자들을 참여하기 위해서 조정을 해야합니다. 관심 있는 분은 제목으로 “openSUSE + LibreOffice Conference Mini-Summit”을 작성후, 다음의 이메일 주소 ddemaio@opensuse.org 로 메일 전달해주시기 바랍니다.

 

제안 제출 방법(How to submit a proposal)

다음의 웹사이트로 제안을 제출해주시기 바랍니다: https://events.opensuse.org/conferences/oSLO

제안서 작성 가이드(Guide to writing your proposal)

하나 이상의 주제와 관련되도록 발표제안을 작성하십시요. 예를들어, 발표가 보안 또는 데스크탑인 경우, openSUSE에서 응응프로그램 설치법이나 데모 시연등을 포함하는 것이 좋습니다. 발표에서 참석하는 사람이 무엇을 배울지 분명하게 작성하십시요. 예를들어, 발표에서 주요 기술 및 소프트웨어의 소개 및 발표의 주요 주제 등입니다.

컨퍼런스에서 여러분을 온라인으로 “만나길" 고대합니다!

Buy me a coffeeBuy me a coffee

윈도우10(Windows 10)에서 WSL2설정 후 우분투(Ubuntu) 20.04를 설치하였습니다. 윈도우10에서 우분투를 설치했으니 어디에 활용을 해볼까 고민하던 찰나, 아래의 2개의 글을 보게 됩니다.

이 글을 보고, WSL2에서 GPU도 지원되는데, 설마 리브레오피스(LibreOffice) 실행도 당연히 지원 하겠지? 란 생각으로
WSL2환경에 설치한 우분투(Ubuntu) 20.04에 리브레오피스 빌드 및 실행을 해보았습니다. (결국 실행은 되더군요)

WSL2의 우분투(Ubuntu) 20.04에 리브레오피스(LibreOffice)를 빌드 하는 내용은 아래의 내용을 참조하였습니다.
Building LibreOffice on Linux and *BSD systems: Tips and Tricks

일단 리브레오피스(libreoffice)에 의존성을 가진 패키지 모두 설치를 아래의 명령어로 해보았습니다.

$ sudo apt build-dep libreoffice

의존성 있는 패키지 모두 설치후, 리브레오피스(LibreOffice)저장소를 복제합니다.

$ git clone https://gerrit.libreoffice.org/core libreoffice

libreoffice 디렉토리에 복제를 하였으면. libreoffice디렉토리로 이동합니다.

$ cd libreoffice

libreoffice디렉토리로 이동하였으면 아래와 같이 빌드환경 설정을 해주는 스크립트를 아래와 같은 명령어로 실행하였습니다.

./autogen.sh --with-locales="ko" --with-vendor="me" --disable-werror --with-build-version="Built by me" --with-lang="ko" --enable-dbgutil

빌드 실행시 아래와 같이 오류가 나오면 libkrb5-dev 패키지를 설치햅니다

checking for library containing krb5_sendauth... no
configure: error: could not find function 'krb5_sendauth' required for Kerberos 5
Error running configure at ./autogen.sh line 299.

libkrb5-dev 패키지는 아래와 같은 명령어로 설치합니다.

$ sudo apt install libkrb5-dev

설치후, 다시 빌드 환경 스크립트 autogen.sh를 실행해줍니다.

****************************************************************************

To build, run:
/usr/bin/make

To view some help, run:
/usr/bin/make help

After the build has finished successfully, you can immediately run what you built using the command:
instdir/program/soffice

If you want to run the smoketest, run:
/usr/bin/make check

*************************************
* WARNING : no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo

빌드 환경이 구성되었으면 make로 빌드를 해줍니다.

빌드는 2013년도에 생산된 i5 듀얼코어 4세대 하스웰+램16GB이면 아마 반나절 정도 오랫동안 걸릴겁니다. 자기전에 빌드하고 컴퓨터를 켜보면 빌드가 되었을겁니다.

빌드가 완료되면 아래와 같은 화면이 뜹니다.

[CMP] sw/util/sw
[DEP] LNK:Library/libswuilo.so
[LNK] Library/libswuilo.so
[DEP] LNK:Library/libvbaswobjlo.so
[LNK] Library/libvbaswobjlo.so
[CMP] sw/util/vbaswobj
[DEP] LNK:Library/libmswordlo.so
[LNK] Library/libmswordlo.so
[DEP] LNK:Library/libsclo.so
[LNK] Library/libsclo.so
[CMP] sw/util/msword
[BIN] sw
[MOD] sw
[CMP] sc/util/sc
[DEP] LNK:Library/libvbaobjlo.so
[LNK] Library/libvbaobjlo.so
[DEP] LNK:Library/libscuilo.so
[LNK] Library/libscuilo.so
[DEP] LNK:Library/libscfiltlo.so
[LNK] Library/libscfiltlo.so
[CMP] sc/util/vbaobj
[CMP] sc/util/scfilt
[RDB] services
[BIN] sc
[MOD] sc
[BIN] postprocess
[GAL] backgrounds
[GAL] sounds
[MOD] postprocess
[ULF] /home/dhsung/libreoffice/workdir/Gallery/sounds/sounds.ulf
[STR] sounds/sounds
[PKG] Gallery/sounds
[ULF] /home/dhsung/libreoffice/workdir/Gallery/backgrounds/backgrounds.ulf
[STR] backgrounds/backgrounds
[PKG] Gallery/backgrounds
[BIN] extras
[MOD] extras
[MOD] libreoffice
[BIN] top level modules: libreoffice
[ALL] top level modules: build-non-l10n-only build-l10n-only

진짜 빌드가 끝났습니다. 그럼 실행을 해볼까요?

빌드한 리브레오피스(LibreOffice(를 실행하려면 아래와 같이 실행해줍니다.

$ ./instdir/program/soffice

WSL2의 Ubuntu+Xming으로 리브레오피스 화면을 띄어보니 진짜 리브레오피스가 빌드 및 실행됨을 확인하였습니다!!!

그러나, 옵션에서 한국어 설정한 후 다시 실행해보니 아직 한글이 뜨지 않고 깨져나옵니다. 그건 한글 글꼴이 나오도록 설정을 하지 않았기 때문이죠. (확인해보니 WSL2에 Ubuntu 20.04설치하면 기본 로케일 설정이 'C.UTF-8'입니다.)

아래는 WSL2에 설치한 Ubuntu 20.04 배포판의 기본 로케일 설정확인 명령입니다.

$ locale
LANG=C.UTF-8
LANGUAGE=
LC_CTYPE="C.UTF-8"
LC_NUMERIC="C.UTF-8"
LC_TIME="C.UTF-8"
LC_COLLATE="C.UTF-8"
LC_MONETARY="C.UTF-8"
LC_MESSAGES="C.UTF-8"
LC_PAPER="C.UTF-8"
LC_NAME="C.UTF-8"
LC_ADDRESS="C.UTF-8"
LC_TELEPHONE="C.UTF-8"
LC_MEASUREMENT="C.UTF-8"
LC_IDENTIFICATION="C.UTF-8"
LC_ALL=

(음.. C.UTF-8이라니... @.@)

윈도우의 WSL2에 설치한 리눅스 배포판에서 리브레오피스(Linux)를 실행하여 한글 정상적으로 나오게 하는 부분은 추후에 추가하여 공유를 하겠습니다.

실행 후, 빌드에 대한 옵션이 제대로 들어갔는지 확인해봅니다.

역시, 위에 벤더이름(me)가 잘 들어갔습니다.

상세하게 Build version 설정을 확인해보니 "Built by me"옵션도 제대로 들어갔구요. 그러나 로케일은 우분투(Ubuntu)기본 설치할때 들어가는 C.UTF-8이 들어가는 것이 아쉽더군요.

간단하게 실 사용을 해보겠습니다.

MS사의 워드격인 리브레오피스 라이터(Writer)에서 영어낱말은 잘 작성되는데, WSL2의 내부 Xwindow글꼴 설정에 한국어 설정한 것이 없으니 한글이 깨져나옵니다. WSL2의 기능에서 배포판에서 사용자 언어에 맞게 설정이 안되고, Xwindow설정에서도 당연히 사용자 언어에 맞게 설정되지 않은 문제라보니 이건 아쉽군요.

WSL2의 우분투(Ubuntu)에서 실제로 리브레오피스(LibreOffice)를 빌드 및 실행을 해보았습니다. 실행후 가볍게 사용해보니 불안정한 문제는 없고 리눅스위에 실행한 것과 동일한 경험을 제공하였습니다. 다만 "한글"이 나오지 않은건 "한국어" 글꼴 렌더링 설정이 안되어서 입니다. 뭐 기본 로케일이 C.UTF-8이니 Xwindow설정에 한글 글꼴 관련 렌더링이 없어 한글 당연히 깨집니다.

MS사의 리눅스(Linux)지원 행보를 보면, 예전과 다르게 오픈소스 친화적으로 변하면서 여러 리눅스에서 돌아가는 응용프로그램을 윈도우에서 실 사용할수 있게 지원함을 알수 있습니다.

여기서 좀 더 확장해가면 MS사가 윈도우 자체 기술은 가지되, 실제 커널 부분을 리눅스(Linux)로 옮겨서 리눅스용 응용프로그램을 품지 않을까란 생각이 들긴 하더군요. (이건 저의 뇌내 망상이라 흘려 들으시기 바랍니다)

앞으로 WSL2가 발전되어 윈도우 언어에 맞게 리눅스 설정이 자동으로 되면 리눅스 개발도 윈도우에서 하는 재미있는 상황이 생기지 않을까란 생각을 해봅니다.

WSL2에 GPU지원한다길래, WSL2에서 리브레오피스(LibreOffice)를 실행할수 있을까에 대한 궁금증으로 시작한 주말의 삽질기는 여기까지입니다.

실제 사용이 가능한지는, 제가 직장인이라 윈도우를 집에서 항상 쓸일이 없어서, 다음 주말에 실행해봐야겠군요. (당연 Xwindow에 한글 글꼴 설정 및 입력 관련으로 삽질을 해봐야 할것 같구요.) ㅎㅎ

제가 2011년 이후부터 주로 Mac OSX와 openSUSE 랩탑 2개로 집에서 작업하다보니, 집에서 윈도우를 네이티브(Native)로 실사용을 거의 오랜만(9~10년)에 해보았습니다. :)

button.like.co/studioego

 

Like DaeHyun Sung's work

Reward Creativity, powered by LikeCoin

button.like.co

www.buymeacoffee.com/dhsung

 

DaeHyun Sung is Free/Libre Open source contributor such as LibreOffice, KDE, GNOME,etc

Hey 👋 I just created a page here. You can now buy me a coffee!I’m Korean Open Source Contributor & Developer, such as LibreOffice, KDE, GNOME, etc.My hobby is Learning...

www.buymeacoffee.com

 

Buy me a coffeeBuy me a coffee

English: Submit & commit Translation on WhatCanIDoForLibreOffice repository using LibreOffice Gerrit code review system.

Korean: 리브레오피스(LibreOffice) 소스코드 리뷰 시스템 Gerrit에서 관리하는 WhatCanIDoForLibreOffice 저장소에 번역 내용 커밋 및 적용하기 기록

Korean follows English. (私の日本語の実力が本当に足りなくて英語と韓国語だけ書きました。)

June 17th Wednesday, 2020.

Japanese TDF Member, Jun Nogata wrote the post on LibreOffice Korean Facebook.

Below is the post he wrote on LibreOffice Korean Facebook.

(He is Japanese speaker. But, He study Korean and wrote the post on LibreOffice Korean Facebook.)

Below is the his post

안녕하새요. 질문이 있어요.

어떻게 이 repository로 commit할 수 있어요?
https://gerrit.libreoffice.org/admin/repos/WhatCanIDoForLibreOffice

logerrit없어요. 모르겠어요~😭
이본어 번역을 commit하고 싶어요...😢
Translated into English
Hello, I have a question.

How to commit the files on the repository, WhatCanIDoForLibreOffice
https://gerrit.libreoffice.org/admin/repos/WhatCanIDoForLibreOffice

I have no logerrit file. I don't know~😭
I want to commit the Japanese translation.
------
I corrected his Korean writing.

안녕하세요. 질문이 있습니다.

어떻게 이 repository로 commit할 수 있어요?
https://gerrit.libreoffice.org/admin/repos/WhatCanIDoForLibreOffice

저는 logerrit이 없어요. 모르겠어요~😭
일본어 번역을 commit하고 싶어요...😢

He want to add Japanese translation on "What Can I Do For LibreOffice" repository, controlled by TDF Gerrit code review system.

Here is "What Can I Do For LibreOffice" repository.
https://gerrit.libreoffice.org/admin/repos/WhatCanIDoForLibreOffice

 

https://gerrit.libreoffice.org/admin/repos/WhatCanIDoForLibreOffice

 

gerrit.libreoffice.org

Here is "What Can I Do For LibreOffice" Homepage.
https://whatcanidoforlibreoffice.org/

 

What can I do for LibreOffice

LibreOffice Language: English ‪čeština | ‪Czech ‪Cymraeg | ‪Welsh Español | Spanish ‪Français | ‪French ‪Italiano | ‪Italian ‪한국어 | ‪Korean ‪Português do Brasil | ‪Brazilian Portuguese ‪Slovenščina | ‪Slovenian ‪S

whatcanidoforlibreoffice.org

I added Korean translation on the "What Can I Do For LibreOffice" Homepage.

I summarize the log to add add my translation(Korean) on "What Can I Do For LibreOffice" repository. (It can also apply to translation for CJK languages such as Japanese, Chinese[Traditional, Simplified], etc.)

For the first time, You need to set yourself up LibreOffice gerrit code review system.

Below is Detail contents about Setup yourself up for gerrit.

https://wiki.documentfoundation.org/Development/gerrit/setup#Setting_yourself_up_for_gerrit_-_the_easy_way

 

Development/gerrit/setup - The Document Foundation Wiki

Setting yourself up for gerrit Before you start: Troubleshooting help The instructions below should be easy and quick to follow. However, if you get stuck somewhere, here is how you get help: Register in Gerrit for first time Gerrit uses The Document Found

wiki.documentfoundation.org

Next time, Get the "What Can I Do For LibreOffice" source code from "WhatCanIDoForLibreOffice" repository.

git clone "https://git.libreoffice.org/WhatCanIDoForLibreOffice"

And then, add /locales/[your-language code].inifile and modify index.html and locales.ini files.

I'm Korean and My mother tongue is Korean, so My Language's ISO Language code is ko-KR.
So, I added ko-kr.inifile.

(For example, If you are Japanese, You can add Japanese code ja and add ja.inifile. Also you are Simplified Chinese speaker, You can add zh-cn.ini file for ISO's Simplified Chinese Language code zh-CN, you are Traditional Chinese speaker, You can add zh-tw.ini file for ISO's Simplified Chinese Language code zh-TW.)

below is my committed some code link Add Korean [ko-kr] translation

 

Diff - f82b424ce060af3a0b10bf6456cbbb96b39cba96^! - WhatCanIDoForLibreOffice - Gitiles

commitf82b424ce060af3a0b10bf6456cbbb96b39cba96[log]

git.libreoffice.org

and commit your modified and added files.

git commit -a

you have to write commit logs.

After wrote the commit log, You can see logs

[master f82b424] Add Korean [ko-kr] translation.
3 files changed, 58 insertions(+)

and then, I have to submit at TDF Gerrit system using logerrit file.

% curl -LJO https://gist.githubusercontent.com/studioego/943695359245924f03268e3bd5fd62ca/raw/logerrit -o logerrit

Next time, You change the logerrit file's execute permission.

% chmod +x logerrit

(You have to regist ssh key on LibreOffice gerrit review system.)

and then submit the commit using logerrit on LibreOffice gerrit review system.

% ./logerrit submit master
Enter passphrase for key '/****/.ssh/id_rsa':
오브젝트 나열하는 중: 7, 완료.
오브젝트 개수 세는 중: 100% (7/7), 완료.
Delta compression using up to 4 threads
오브젝트 압축하는 중: 100% (4/4), 완료.
오브젝트 쓰는 중: 100% (4/4), 424 bytes | 424.00 KiB/s, 완료.
Total 4 (delta 3), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (3/3)
remote: Processing changes: refs: 1, done
remote: ERROR: commit f82b424: missing Change-Id in message footer
remote:
remote: Hint: to automatically insert a Change-Id, install the hook:
remote: gitdir=$(git rev-parse --git-dir); scp -p -P 29418 ****@gerrit.libreoffice.org:hooks/commit-msg ${gitdir}/hooks/
remote: and then amend the commit:
remote: git commit --amend --no-edit
remote: Finally, push your changes again
remote:
To ssh://logerrit/WhatCanIDoForLibreOffice
! [remote rejected] HEAD -> refs/for/master (commit 4a07bf2: missing Change-Id in message footer)
error: 레퍼런스를 'ssh://logerrit/WhatCanIDoForLibreOffice'에 푸시하는데 실패했습니다

Ooops, Because of missing Change-ID in message footer, You don't submit the commit.

So, install the hook

% gitdir=$(git rev-parse --git-dir); scp -p -P 29418 ****@gerrit.libreoffice.org:hooks/commit-msg ${gitdir}/hooks/
Enter passphrase for key '/****/.ssh/id_rsa':
commit-msg 100% 1791 5.3KB/s 00:00

and then amend the commit (add Change-ID)

git commit --amend --no-edit
[master f82b424] Add Korean [ko-kr] translation.
Date: Fri Jun 14 01:26:26 2019 +0900

after amand the commit, added Change-Id in message footer.
Finally, push your changes again

% ./logerrit submit master
Enter passphrase for key '/********/.ssh/id_rsa':
오브젝트 나열하는 중: 7, 완료.
오브젝트 개수 세는 중: 100% (7/7), 완료.
Delta compression using up to 4 threads
오브젝트 압축하는 중: 100% (4/4), 완료.
오브젝트 쓰는 중: 100% (4/4), 468 bytes | 468.00 KiB/s, 완료.
Total 4 (delta 3), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (3/3)
remote: Processing changes: refs: 1, new: 1, done
remote:
remote: SUCCESS
remote:
remote: https://gerrit.libreoffice.org/.../WhatCanIDoForL.../+/73976 Add Korean [ko-kr] translation.
 [NEW]
remote:
To ssh://logerrit/WhatCanIDoForLibreOffice
* [new branch] HEAD -> refs/for/master

and submit the gerrit review system and If the Libreoffice's "WhatCanIDoForLibreOffice" repository soruce code reviewer allow the commit, He/She accept your source code.
https://gerrit.libreoffice.org/c/WhatCanIDoForLibreOffice/+/73976

 

https://gerrit.libreoffice.org/c/WhatCanIDoForLibreOffice/+/73976

 

gerrit.libreoffice.org

Finally, After The Repository committer checked the your commit, He’ve approve the your submitted source code.

Change has been successfully cherry-picked as f82b424ce060af3a0b10bf6456cbbb96b39cba96 by ***

Here is my commit log Add Korean [ko-kr] translation and review link https://gerrit.libreoffice.org/c/WhatCanIDoForLibreOffice/+/73976 for submit the translation source code on WhatCanIDoForLibreOffice repository.

With this opportunity, I would like East Asian developers to collaborate on various developments and uses on LibreOffice.

Collaboration

  • Korean: 협업(協業)
  • Japanese: 協力, コラボレーション
  • Simplified Chinese: 合作/协作
  • Traditional Chinese: 協作/合作

우리말로 쓴 글

2020년 6월 17일 수요일.

일본의 문서재단(The Document Foundation)회원인 노가타 준(Jun Nogata, 野方純)님께서 페이스북의 "리브레오피스 (한국어)"채널에 글을 올리셨습니다.

안녕하새요. 질문이 있어요.

어떻게 이 repository로 commit할 수 있어요?
https://gerrit.libreoffice.org/admin/repos/WhatCanIDoForLibreOffice

logerrit없어요. 모르겠어요~😭
이본어 번역을 commit하고 싶어요...😢
(여기서는 일본분의 글을 아래와 같이 어법에 맞게 고쳐보았습니다.)

안녕하세요. 질문이 있습니다.

어떻게 이 repository로 commit할 수 있어요?
https://gerrit.libreoffice.org/admin/repos/WhatCanIDoForLibreOffice

저는 logerrit이 없어요. 모르겠어요~😭
일본어 번역을 commit하고 싶어요...😢

다음 링크는 노가타 준님이 올린 리브레오피스 한국어 채널의 글 입니다.

노가타 준님은 문서재단(TDF; The Document Foundation)의 Gerrit 소스코드 검토 시스템에서 관리하는 "What Can I Do For LibreOffice" 저장소에 일본어 번역을 추가하고 싶어하였습니다.

다음은 "What Can I Do For LibreOffice"저장소 링크입니다.
https://gerrit.libreoffice.org/admin/repos/WhatCanIDoForLibreOffice

 

https://gerrit.libreoffice.org/admin/repos/WhatCanIDoForLibreOffice

 

gerrit.libreoffice.org

다음은 "What Can I Do For LibreOffice" 홈페이지 링크입니다.
https://whatcanidoforlibreoffice.org/

 

What can I do for LibreOffice

LibreOffice Language: English ‪čeština | ‪Czech ‪Cymraeg | ‪Welsh Español | Spanish ‪Français | ‪French ‪Italiano | ‪Italian ‪한국어 | ‪Korean ‪Português do Brasil | ‪Brazilian Portuguese ‪Slovenščina | ‪Slovenian ‪S

whatcanidoforlibreoffice.org

저는 "What Can I Do For LibreOffice" 홈페이지에 한국어 번역을 하였습니다.

저는 "What Can I Do For LibreOffice"의 저장소에 한국어 번역을 추가한 기록을 다음과 같이 정리하였습니다.
(이 글을 참조로 하여 일본어[日本語], 중국어[번체繁體, 간체简体] 등등 동아시아 언어 사용사는 사람이 "What Can I Do For LibreOffice"의 저장소에 번역을 올릴 수 있습니다.)

맨 처음으로, LibreOffice의 gerrit 리뷰 시스템을 설정을 해야합니다.
상세한 내용은 다음의 링크 Setting yourself up for gerrit - the easy way에서 확인하시기 바랍니다.

그 다음, "WhatCanIDoForLibreOffice" 저장소에서 "What Can I Do For LibreOffice" 소스코드를 아래의 명령어로 받습니다.

git clone "https://git.libreoffice.org/WhatCanIDoForLibreOffice"

그리고, /locales/[your-language code].ini 파일을 추가 및 index.htmllocales.ini 파일을 수정합니다.

저는 한국인이며, 모국어가 한국어입니다. 그래서 한국어의 ISO언어 코드는 ko-KR입니다.
그래서 저는 ko-kr.ini파일을 추가했습니다.

(예를들어, 일본어를 사용하는 일본사람이라면, 일본어 언어 코드가 ja 이니 ja.ini파일을 추가하여 번역을 적용할 수 있습니다. 또한, 간체 중국어를 사용하는 사람이라면 간체 중국어에 해당하는 언어 코드가 zh-CN 이니 zh-cn.ini을 추가하여 번역을 적용할 수 있습니다. 그리고 번체 중국어 사용하는 사람이라면 번체 중국어에 해당하는 언어코드가 zh-TW 이니 zh-tw.ini파일 추가하여 번역을 적용할 수 있습니다.)

다음은 제가 커밋한 소스코드의 링크 Add Korean [ko-kr] translation 입니다.

 

Diff - f82b424ce060af3a0b10bf6456cbbb96b39cba96^! - WhatCanIDoForLibreOffice - Gitiles

commitf82b424ce060af3a0b10bf6456cbbb96b39cba96[log]

git.libreoffice.org

이후에 추가 및 수정한 소스코드 파일을 커밋합니다.

git commit -a

커밋 로그에 커밋에 해당하는 제목과 내용을 써야합니다. 커밋 로그를 쓴 후엔, 다음의 로그를 볼 수 있습니다.

[master f82b424] Add Korean [ko-kr] translation.
3 files changed, 58 insertions(+)

이제 커밋을 하였으면, logerrit 파일을 이용하여 문서재단(TDF)가 관리하는 Gerrit 코드 리뷰 시스템에 소스코드를 제출해봅시다.

다음은, 제가 "WhatCanIDoForLibreOffice" 저장소에 맞게 수정한 logerrit 파일을 gist저장소에서 다운로드 받는 명령어입니다.

% curl -LJO https://gist.githubusercontent.com/studioego/943695359245924f03268e3bd5fd62ca/raw/logerrit -o logerrit

그 다음, logerrit파일에 실행 권한을 추가합니다.

% chmod +x logerrit

(알림: 필수로 리브레오피스 Gerrit 리뷰시스템에서 SSH 키를 등록해야합니다.)

logerrit파일을 이용하여, 커밋한 소스코드를 제출합니다.

% ./logerrit submit master
Enter passphrase for key '/****/.ssh/id_rsa':
오브젝트 나열하는 중: 7, 완료.
오브젝트 개수 세는 중: 100% (7/7), 완료.
Delta compression using up to 4 threads
오브젝트 압축하는 중: 100% (4/4), 완료.
오브젝트 쓰는 중: 100% (4/4), 424 bytes | 424.00 KiB/s, 완료.
Total 4 (delta 3), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (3/3)
remote: Processing changes: refs: 1, done
remote: ERROR: commit f82b424: missing Change-Id in message footer
remote:
remote: Hint: to automatically insert a Change-Id, install the hook:
remote: gitdir=$(git rev-parse --git-dir); scp -p -P 29418 ****@gerrit.libreoffice.org:hooks/commit-msg ${gitdir}/hooks/
remote: and then amend the commit:
remote: git commit --amend --no-edit
remote: Finally, push your changes again
remote:
To ssh://logerrit/WhatCanIDoForLibreOffice
! [remote rejected] HEAD -> refs/for/master (commit 4a07bf2: missing Change-Id in message footer)
error: 레퍼런스를 'ssh://logerrit/WhatCanIDoForLibreOffice'에 푸시하는데 실패했습니다

아, Gerrit에서 사용하는 Change-ID를 커밋 메시지 하단에 없기때문에, 소스코드 커밋을 제출할 수 없습니다.

그래서 위의 메세지에서 안내되는 내용처럼 훅(hook)을 다음과 같이 설치합니다.

% gitdir=$(git rev-parse --git-dir); scp -p -P 29418 ****@gerrit.libreoffice.org:hooks/commit-msg ${gitdir}/hooks/
Enter passphrase for key '/****/.ssh/id_rsa':
commit-msg 100% 1791 5.3KB/s 00:00

그리고, 커밋로그에 Change-ID를 추가하도록 진행합니다.

git commit --amend --no-edit
[master f82b424] Add Korean [ko-kr] translation.
Date: Fri Jun 14 01:26:26 2019 +0900

커밋로그에 Change-ID를 추가된것을 알 수 있습니다.

마지막으로, 다시 logerrit으로 소스코드를 제출합니다.

% ./logerrit submit master
Enter passphrase for key '/********/.ssh/id_rsa':
오브젝트 나열하는 중: 7, 완료.
오브젝트 개수 세는 중: 100% (7/7), 완료.
Delta compression using up to 4 threads
오브젝트 압축하는 중: 100% (4/4), 완료.
오브젝트 쓰는 중: 100% (4/4), 468 bytes | 468.00 KiB/s, 완료.
Total 4 (delta 3), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (3/3)
remote: Processing changes: refs: 1, new: 1, done
remote:
remote: SUCCESS
remote:
remote: https://gerrit.libreoffice.org/.../WhatCanIDoForL.../+/73976 Add Korean [ko-kr] translation.
 [NEW]
remote:
To ssh://logerrit/WhatCanIDoForLibreOffice
* [new branch] HEAD -> refs/for/master

이제, Gerrit 리뷰 시스템에 제출하였습니다.

https://gerrit.libreoffice.org/c/WhatCanIDoForLibreOffice/+/73976
만약, 리브레오피스의 WhatCanIDoForLibreOffice 소스코드 리뷰어가 커밋를 허용하면, 소스코드가 적용됩니다.

마침내, WhatCanIDoForLibreOffice 저장소 커미터가 커밋을 확인한 후에, 커미터는 제출한 소스코드를 승인하였습니다.

Change has been successfully cherry-picked as f82b424ce060af3a0b10bf6456cbbb96b39cba96 by ***

이제 저장소에 제출한 번역 소스코드가 적용되었습니다.

다음은 제가 WhatCanIDoForLibreOffice 저장소에 제출한 번역 소스코드 리뷰 링크 https://gerrit.libreoffice.org/c/WhatCanIDoForLibreOffice/+/73976 와 커밋링크 Add Korean [ko-kr] translation 입니다.

이 글을 계기로, 여러가지 개발 및 사용관련으로 CJK 지역의 협업(協業), (Japanese: 協力, Simplified Chinese: 合作/协作, Traditional Chinese: 協作/合作, English: Collaboration)을 이루었으면 합니다. :)

Buy me a coffeeBuy me a coffee

이번 2020년 NIPA에서 진행하는 컨트리뷰톤LibreOffice 한국어 사용성 향상 및 공헌자 양성 프로젝트 멘토링을 위해서, Windows 빌드를 어떻게 할까 고민을 하였습니다.

고민 끝에, 이전에 새로 분양을 받은 HP 랩탑을 Windows를 쓰는 걸로 결론을 내렸습니다.

그래서, 새로 받은 HP 랩탑에 Windows 10설정을 하였고 이제 리브레오피스(LibreOffice)를 빌드하도록 진행을 하였습니다.

저는 여태껏 리눅스(Linux)와 맥OSX(Mac OSX)에서만 리브레오피스(LibreOffice)빌드를 하였습니다.
주로 리눅스와 맥을 사용하는 사람이라 보니, 윈도우(Windows)에서 리브레오피스 빌드는 아주 생소하게 느껴집니다.

(저, 참고로 첫직장에서 사회생활할때 SI용역으로 MFC 어플리케이션 개발하고, Windows API로 삽질하고, C#, ASP.NET으로 밥벌이한 사람입니다. 그때 Python으로도 개발을 해보고 Java로도 개발을 해보고... 오픈소스 활동한다고 해도 닥치는대로 개발해보는 잡부인생은 사회생활 첫시작부터 ㅎㅎ )

각설하고, 문서재단(The Document Foundation)의 Building LibreOffice on Windows with Cygwin and MSVC: Tips and Tricks 를 보고 리브레오피스(LibreOffice)빌드를 따라해보았습니다.

문서 읽고, 우선 제일 먼저 해야할일

  • MS사의 Visual Studio 2019 설치 (이 글을 쓰는 당시에 최신이 Visual Studio 2019)
  • 빌드를 위한 Windows 10 SDK 설치하기
  • Visual Studio와 Windows 10 SDK 설치후, Visual Studio 언어설정을 무조건 영어(English)로 설정하기
  • 자바(Java)를 빌드할 openJDK버전 설치 AdoptOpenJDK 설치함
  • Cygwin 설치 및 빌드 툴 설치

위의 4가지만 하면 그래도 큰 난관은 돌파합니다.

Linux환경을 모른다면 Cygwin에서 빌드하는건 정말 엄청 어려울듯한?

실제로 윈도우(Windows)환경에서 리브레오피스(LibreOffice)를 빌드해보니, 엄청난 시행착오를 겪어보며, 구글링(Googling)과 IRC문의로 문제를 해결하였습니다.

Cygwin에서 빌드 스크립트 (Visual Studio 2019의 컴파일로로 빌드하도록 설정하였습니다.

 /cygdrive/c/sources/libo-core/autogen.sh \
               --with-external-tar=/cygdrive/c/sources/lo-externalsrc \
               --with-junit=/cygdrive/c/sources/junit-4.10.jar \
               --with-ant-home=/cygdrive/c/sources/apache-ant-1.9.5 \
               --enable-pch --disable-ccache \
               --with-locales=ko -
               -with-vendor=me \
               --with-lang=ko \
               --enable-dbgutil \
                --disable-skia \
               --with-jdk-home="/cygdrive/c/Program Files/AdoptOpenJDK/jdk-14.0.1.7-openj9/" \
               --enable-64-bit \
               --with-visual-studio=2019 \
               --disable-odk

빌드 중 에러, Skia는 Clang(llvm)이 필요하나 현재 cygwin에서 설치를 했으나 인식을 못하는듯
그래서 빌드시 skia 미지원으로 빌드하도록 변경

checking whether to build Skia... yes checking for clang-cl... no configure: error: Clang compiler not found. The Skia library needs to be built using Clang. Error running configure at /cygdrive/c/sources/libo-core/autogen.sh line 299.

안티바이러스 끄기를 해야 빌드 설정이 진행되더군요.

cat: 'C:/sources/libo-core/eicar': Permission denied configure: error: Exclude the build and source directories associated with LibreOffice in the following Antivirus software: *Windows Defender Error running configure at /cygdrive/c/sources/libo-core/autogen.sh line 299.
Windows10에서 안티바이러스 끄기는 업데이트 및 보안선택 -> Windows 보안선택 -> 바이러스 및 위협방지 클릭

실시간 감지를 끕니다. 그래야 빌드를 시도할 수 있습니다.

빌드 설정이 끝나면 아래와 같은 메세지를 확인할 수 있습니다.

To build, run:
C:/cygwin64/opt/lo/bin/make

To view some help, run:
C:/cygwin64/opt/lo/bin/make help

이제, 아래의 명령어로 빌드를 진행해봅니다

$ /opt/lo/bin/make clean gb_COLOR=1

이후, 빌드를 하려니 또 오류가 나오더군요.

아래 오류를 보니, 왜 빌드가 안되지 하며 이해가 안되어 머리가 아팠습니다.
msvcprtd.lib(MSVCP100D.dll) : fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'

구글링을 한 결과 아래의 글을 확인하였습니다.

MSVC 2015's broken static initializer_list causing build failure

http://document-foundation-mail-archive.969070.n3.nabble.com/MSVC-2015-s-broken-static-initializer-list-causing-build-failure-td4202928.html

 

Dev - MSVC 2015's broken static initializer_list causing build failure

On Sun, 2017-02-19 at 20:53 +0000, Luke Benes wrote: > config_host.mk: > export UCRTSDKDIR=C:/PROGRA~2/WI3CF2~1/10/ > export UCRTVERSION=10.0.10240.0 > > Looking at the creation date of that folder, it matches the creation >  date of C:\Program Files (x86

document-foundation-mail-archive.969070.n3.nabble.com

확인 결과, Windows10 OS에 Visual Studio 2019 설치 및 cygwin으로 빌드 설정만 하였지, 정작 빌드를 위한 Windows 10 SDK 가 설치가 되지 않아 생기던 버그더군요.

아래 링크로 Windows 10 SDK를 설치합니다

https://developer.microsoft.com/ko-kr/windows/downloads/windows-10-sdk/

 

Windows 10 SDK - Windows 앱 개발

Windows 10 SDK Windows 10, 버전 2004용 Windows 10 SDK(10.0.19041.0)는 Windows 10 앱을 빌드하는 데 필요한 최신 헤더, 라이브러리, 메타데이터 및 도구를 제공합니다. 이 SDK를 사용하여 Windows 10, 버전 2004 및 이�

developer.microsoft.com

설치가 완료되면 이제 제대로 빌드가 진행됩니다.

리브레오피스(LibreOffice)빌드하는데 꽤 시간 걸리니, 자기전에 돌리는 것이 속이 편합니다.

만약에, Visual Studio와 Windows 10 SDK 설치후, Visual Studio 언어설정을 무조건 영어(English)로 설정하기를 하지 않으면 nss 라이브러리 컴파일하다 오류가 납니다.

만약, cl.exe를 실행하여 한글이 나온다고 하면

C:\Users\****>"C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.26.28801/bin/Hostx64/x64/cl.exe"
Microsoft (R) C/C++ 최적화 컴파일러 버전 19.26.28806(x64)
Copyright (c) Microsoft Corporation. All rights reserved.

사용법: cl [ option... ] filename... [ /link linkoption... ]

다음과 같이, Visual Studio의 언어설정을 영어(English)로 바꿔서, cl.exe가 영어로 나오도록 변경 한후에 LibreOffice빌드를 해야합니다. 

C:\Users\****>"C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.26.28801/bin/Hostx64/x64/cl.exe"
Microsoft (R) C/C++ Optimizing Compiler Version 19.26.28806 for x64
Copyright (C) Microsoft Corporation.  All rights reserved.

usage: cl [ option... ] filename... [ /link linkoption... ]

 

참고로, Visual Studio의 언어설정을 영어(English)로 바꾸려면, Visual Studio Installer를 실행 후 "영어"언어팩을 설치해야합니다.

아래는 러시아어(Russian Language)에서 Visual Studio 언어팩 설정 화면입니다.

https://imgur.com/PnNB7Li

 

Imgur

 

imgur.com

 

위의 빌드 오류 이슈에 대해서 LibreOffice의 #libreoffice-dev채널에서 아래의 링크를 이용하여 문의를 하였습니다.

Friday, June 12th, 2020
Hello 12:30 AM I have a question for windows build. 12:31 AM Now, I build LibreOffice on Windows. After setting building environment (Cygwin). During building, It shows error message 12:31 AM [coreconf/rules.mk:44: lib] Error 2 12:31 AM out\nssutil3.lib □□□̺귯□□ □□ out\nssutil3.exp 12:32 AM [C:/sources/libo-core/external/nss/ExternalProject_nss.mk:21: C:/build/workdir/ExternalProject/nss/build] Error 1
mst___: please use pastebin

dhsung: https://pastebin.com/7s2GXkxL
https://pastebin.com/7s2GXkxL

 

[Bash] LibreOffice build error on Windows & Cygwin - Pastebin.com

Not a member of Pastebin yet? Sign Up, it unlocks many cool features! /cygdrive/c/build $   /cygdrive/c/sources/libo-core/autogen.sh --with-external-tar=/cygdrive/c/sources/lo-externalsrc  --with-junit=/cygdrive/c/sources/junit-4.10.jar  --with-ant-home

pastebin.com

mst___: it looks like when building nss, /FS parameter is missing in the command line for pkix_pl_pk11certstore.c
dhsung: Hmm, How to add the /FS parameter at autogen.sh?
mst___: can you pastebin the command line that invokes cl.exe on pkix_pl_pk11certstore.c ?
https://pastebin.com/nSx0sKkw

 

[Bash] LibreOffice compile error msg about nss build - Pastebin.com

 

pastebin.com

mst___: ah... probably the cause is the syntax error in /usr/bin/sh: -c: line 0: `expr Microsoft(R) \> 1600 \| Microsoft(R) = 1600 \& C/C++ \>= 40219'

dhsung: hmm, I checked the env, It shows LANG=ko_KR.UTF-8@cjknarrow

mikekaganski: out of interest: what does 'C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.26.28801/bin/Hostx64/x64/cl.exe' output for you in the console? 1:21 AM you might want to file a bug against NSS with that information ;-) 1:21 AM — mikekaganski used his path to cl.exe, naturally dhsung_ might need to adjust

cl.exe (Korean)

https://pastebin.com/XNRVYfiy

 

cl.exe (Korean version) - Pastebin.com

Not a member of Pastebin yet? Sign Up, it unlocks many cool features! C:\Users\dhsung>"C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.26.28801/bin/Hostx64/x64/cl.exe" Microsoft (R) C/C++ 최적화 컴파일러 버전 19.26.2

pastebin.com

— mikekaganski has "Microsoft (R) C/C++ Optimizing Compiler Version 19.26.28806 for x64" in the first line
mikekaganski: anyway, I'd suggest you to re-run VS installer, and only select en-US UI 1:42 AM no need to reinstall 1:42 AM just run its installer and modify install set 1:44 AM dhsung_: https://imgur.com/PnNB7Li
https://imgur.com/PnNB7Li

 

Imgur

 

imgur.com

참고: nss library

https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Building

 

Building NSS

This page has detailed information on how to build NSS. Because NSS is a cross-platform library that builds on many different platforms and has many options, it may be complex to build. Please read these instructions carefully before attempting to build.

developer.mozilla.org

리브레오피스에서 윈도우(Windows)환경의 Visual Studio 2019에서 빌드 하기 

https://wiki.documentfoundation.org/Development/BuildingOnWindows#Visual_Studio_2019

 

Building LibreOffice on Windows with Cygwin and MSVC: Tips and Tricks - The Document Foundation Wiki

Build dependencies Before you can start hacking LibreOffice on Windows, you need to follow these instructions to set up a build environment. Do also read our generic building hints. Install Visual Studio You need the Microsoft compiler/development suite Vi

wiki.documentfoundation.org

아래 영어에 적힌 내용처럼, cygwin 쉘에서는 인코딩 집합과 맞지 않아 빌드 오류인 경우가 많으니, 리브레오피스를 윈도우환경의 cygwin에서 빌드시, Visual Studio설정을 영어로 된 UI로 설정을 해야 한다고 나와 있습니다.
Note: Visual Studio command-line tools use system OEM codepage to output messages to console, when corresponding UI language is installed as part of Visual Studio installation. The OEM codepage on Windows depends on system locale defined using "Language for non-Unicode programs" in intl.cpl applet (description of the setting), and is often incompatible with encoding set in cygwin shell (typically UTF-8). This garbles the output from the tools in the build log. You might want to make sure that you only install English UI when installing Visual Studio to avoid that problem.

빌드가 완료되면 아래와 같은 메세지가 뜹니다.

[RDB] services
[BIN] sc
[MOD] sc
[BIN] postprocess
[GAL] backgrounds
[GAL] sounds
[MOD] postprocess
[ULF] C:/build/workdir/Gallery/sounds/sounds.ulf
[STR] sounds/sounds
[PKG] Gallery/sounds
[ULF] C:/build/workdir/Gallery/backgrounds/backgrounds.ulf
[STR] backgrounds/backgrounds
[PKG] Gallery/backgrounds
[BIN] extras
[MOD] extras
[MOD] libreoffice
[BIN] top level modules: libreoffice
[ALL] top level modules: build-non-l10n-only build-l10n-only

리브레오피스(LibreOffice) 윈도우 빌드가 완료되었으니 실행을 해봐야겠지요?

아래의 명령어로 실행을 해봅니다!

$ ./instdir/program/soffice.exe

리브레오피스(LibreOffice) 실행을 하면 아래와 같은 시작 스플레쉬(Splash) 화면이 나오면서 프로그램이 로딩됩니다.

리브레오피스(LibreOffice) 로딩이 되며 시작 스플레시가 꺼지면 다음과 같이 시작화면이 나옵니다.

리브레오피스(LibreOffice)의 정보를 확인하면 아래와 같이 나타납니다.

그리고, 한글(HWP)와 MS워드 격인 리브레오피스(LibreOffice)의 라이터(Writer)를 실행해보았습니다.

글이 제대로 써지는지 확인하였습니다.

엄청난 시행착오를 겪은 후에, 결국은 빌드 및 실행을 해보았습니다.

이제부터, 소프트웨어 번역(飜譯, Translation)와 Wiki 번역 (飜譯, Translation)을 해봐야겠습니다.

Buy me a coffeeBuy me a coffee

이번에 Python을 이용하여 LibreOffice의 Unittest 소스코드에 공헌을 해보았습니다.

출처:

관련 링크:

링크의 Cppunit 소스코드에 보면 입력된 값에 대해서 이 값이 기대된 값(Expected value)인지 검사하는 로직이 있습니다.

이 단위테스트에서 주석과 결과를 넣어야할텐데, 문자열의 유니코드 코드포인트값을 어떻게 빠르게 뽑아낼까 고민을 하다 역시 Python이 있었지 하면서 Python으로 결과값을 뽑아내서 cppunittest 소스코드를 수정 작성하였습니다.

        // DBNum1 -> NatNum4: Korean lower case characters
        // 一億二千三百四十五万六千七百八十九
        sExpected = u"\u4e00\u5104\u4e8c\u5343\u4e09\u767e\u56db\u5341\u4e94\u4e07\u516d\u5343\u4e03\u767e\u516b\u5341\u4e5d ";
        sCode = "[NatNum4][$-0412]General\\ ";
        checkPreviewString(aFormatter, sCode, 123456789, eLang, sExpected);
        sCode = "[DBNum1][$-0412]General\\ ";
        checkPreviewString(aFormatter, sCode, 123456789, eLang, sExpected);

아래는, 주석에 적은 문자열를 Python을 이용하여 Unicode Codepoint로 변환하는 예제입니다.

Python 3.8.3 (default, May 27 2020, 20:54:22) 
[Clang 11.0.3 (clang-1103.0.32.59)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> "一億二千三百四十五万六千七百八十九".encode("unicode_escape")
b'\\u4e00\\u5104\\u4e8c\\u5343\\u4e09\\u767e\\u56db\\u5341\\u4e94\\u4e07\\u516d\\u5343\\u4e03\\u767e\\u516b\\u5341\\u4e5d'
>>> "壹億貳阡參佰四拾伍萬六阡七佰八拾九".encode("unicode_escape")
b'\\u58f9\\u5104\\u8cb3\\u9621\\u53c3\\u4f70\\u56db\\u62fe\\u4f0d\\u842c\\u516d\\u9621\\u4e03\\u4f70\\u516b\\u62fe\\u4e5d'
>>> "1억2천3백4십5만6천7백8십9".encode("unicode_escape")
b'\\uff11\\uc5b5\\uff12\\ucc9c\\uff13\\ubc31\\uff14\\uc2ed\\uff15\\ub9cc\\uff16\\ucc9c\\uff17\\ubc31\\uff18\\uc2ed\\uff19'
>>> "일억이천삼백사십오만육천칠백팔십구".encode("unicode_escape")
b'\\uc77c\\uc5b5\\uc774\\ucc9c\\uc0bc\\ubc31\\uc0ac\\uc2ed\\uc624\\ub9cc\\uc721\\ucc9c\\uce60\\ubc31\\ud314\\uc2ed\\uad6c'
>>> 

Python의 결과값을 이용하여 Cppunittest의 결과값 비교를 하는데 유용하여 사용했습니다.

Python이 아니였으면 일본사람인 小笠原徳彦(Naruhiko Ogasawara)님과 협업으로 리브레오피스 소스코드 수정하는데 많이 지연이 되었을 것 같아요.

 

ps. 파이썬(Python)같이 생산성 빠른 언어를 익혀두면 언젠간 쓸 일이 생긴다.

ps2. 참고할만한 글

https://towardsdatascience.com/a-guide-to-unicode-utf-8-and-strings-in-python-757a232db95c

A Guide to Unicode, UTF-8 and Strings in Python

Strings are one of the most common data types in Python. This guide will help you master Unicode, UTF-8 and strings in general.

towardsdatascience.com

 

Buy me a coffeeBuy me a coffee

MS Windows에서 Visual Studio(비주얼 스튜디오)로 리브레오피스(LibreOffice) 개발하기 동영상

Developing LibreOffice in Visual Studio

https://www.youtube.com/watch?v=Xn3CtIrMpIA

 

Buy me a coffeeBuy me a coffee

+ Recent posts