0%

重点学习 errnum 转 str 的实现方法

perror

stdio-common/perror.c

  • perror (const char *s)
    • static void perror_internal (FILE *fp, const char *s, int errnum)

__strerror_r

string/_strerror.c

/* Return a string describing the errno code in ERRNUM.  */
char *
__strerror_r (int errnum, char *buf, size_t buflen)
{
  char *err = (char *) __get_errlist (errnum);
  if (__glibc_unlikely (err == NULL))
    {
      __snprintf (buf, buflen, "%s%d", _("Unknown error "), errnum);
      return buf;
    }

  return _(err);
}

__get_errlist

stdio-common/errlist.c

配置前的状态

  • windows 11 + wsl + ubuntu 18.04

windows 可以识别 adb devices

C:\Users>adb devices
List of devices attached
fada-018b4209f24d0001   device

wsl 识别不到 adb devices

luyang@LUYANG:~$ adb devices
* daemon not running; starting now at tcp:5037
* daemon started successfully
List of devices attached

Windows 安装工具包

windows 安装 usbipd-win

WSL 安装工具包

WSL ubuntu 安装 adb 工具

系统信息

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.6 LTS
Release:        20.04
Codename:       focal
$ uname -a
Linux kang-HP-ProBook-440-14-inch-G10-Notebook-PC 5.15.0-67-generic #74~20.04.1-Ubuntu SMP Wed Feb 22 14:52:34 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

安装依赖

sudo apt update && sudo apt upgrade
sudo apt install binutils build-essential gcc make perl net-tools libncurses-dev \
				openssh-server git fakeroot libssl-dev bc flex libelf-dev bison \
				dwarves zstd

Linux 源码下载

拷贝 .config 配置文件

解压源代码并进入源码根目录,然后执行

安装 subversion

sudo apt-get remove --purge subversion

sudo apt-get update
sudo apt-get install subversion

创建 SVN 用户

sudo adduser svn
sudo adduser svn sudo
sudo su svn

创建仓库目录

sudo mkdir /svn
sudo mkdir /svn/repos
sudo mkdir /svn/repos/public
sudo chmod 777 -R /svn/repos/public
sudo chown svn:svn -R /svn

创建版本库

sudo svnadmin create /svn/repos/public

$ ls -lah /svn/repos/public
total 32K
drwxrwxrwx 6 svn  svn  4.0K 6月  19 14:15 .
drwxr-xr-x 3 svn  svn  4.0K 6月  19 14:15 ..
drwxr-xr-x 2 root root 4.0K 6月  19 14:15 conf
drwxr-sr-x 6 root root 4.0K 6月  19 14:15 db
-r--r--r-- 1 root root    2 6月  19 14:15 format
drwxr-xr-x 2 root root 4.0K 6月  19 14:15 hooks
drwxr-xr-x 2 root root 4.0K 6月  19 14:15 locks
-rw-r--r-- 1 root root  246 6月  19 14:15 README.txt
cd /svn/repos/public
sudo chmod -R 777 db
cd conf
sudo cp svnserve.conf svnserve.conf.bak
sudo vim svnserve.conf

取消注释:

NI-VISA Driver Wizard 生成了一个 .INF 文件。右键该文件安装的过程中提示错误:第三方 INF 不包含数字签名信息。

Driver Wizard 生成的 INF 文件,必须为其创建 Windows Catalog (.cat)文件并进行数字签名,然后才能在Windows 10(或更高版本)机器上安装INF文件。

for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg



echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null


sudo apt-get update


sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

R1 - Gerrit 环境搭建

环境说明

  • ubuntu 20.04
  • Gerrit 3.8.0
  • openjdk version “11.0.19” 2023-04-18

安装依赖软件包

sudo apt install openjdk-11-jdk openjdk-11-jdk-headless openjdk-11-jre openjdk-11-jre-headless

创建 Gerrit 用户

sudo adduser gerrit
sudo usermod -a -G sudo gerrit
sudo su gerrit
mkdir ~/gerrit
java -jar gerrit-3.8.0.war init -d ~/gerrit

安装 Gerrit

$ java -jar gerrit-3.8.0.war init -d ~/gerrit
Using secure store: com.google.gerrit.server.securestore.DefaultSecureStore
[2023-06-03 12:19:03,027] [main] INFO  com.google.gerrit.server.config.GerritServerConfigProvider : No /home/gerrit/gerrit/etc/gerrit.config; assuming defaults

*** Gerrit Code Review 3.8.0
*** 

Create '/home/gerrit/gerrit'   [Y/n]? Y

*** Git Repositories
*** 

Location of Git repositories   [git]: 

*** JGit Configuration
*** 

Auto-configured "receive.autogc = false" to disable auto-gc after git-receive-pack.

*** Index
*** 

Type                           [lucene]: 

*** User Authentication
*** 

Authentication method          [openid/?]: ?
       Supported options are:
         openid
         openid_sso
         http
         http_ldap
         client_ssl_cert_ldap
         ldap
         ldap_bind
         custom_extension
         development_become_any_account
         oauth
Authentication method          [openid/?]: http
Get username from custom HTTP header [y/N]? y
Username HTTP header           [SM_USER]: 
SSO logout URL                 : 
Enable signed push support     [y/N]? y
Use case insensitive usernames [Y/n]? Y

*** Review Labels
*** 

Install Verified label         [y/N]? N

*** Email Delivery
*** 

SMTP server hostname           [localhost]: 
SMTP server port               [(default)]: 
SMTP encryption                [none/?]: 
SMTP username                  : 

*** Container Process
*** 

Run as                         [gerrit]: 
Java runtime                   [/usr/lib/jvm/java-11-openjdk-amd64]: 
Copy gerrit-3.8.0.war to /home/gerrit/gerrit/bin/gerrit.war [Y/n]? Y
Copying gerrit-3.8.0.war to /home/gerrit/gerrit/bin/gerrit.war

*** SSH Daemon
*** 

Listen on address              [*]: 
Listen on port                 [29418]: 
Generating SSH host key ... rsa... ed25519... ecdsa 256... ecdsa 384... ecdsa 521... done

*** HTTP Daemon
*** 

Behind reverse proxy           [y/N]? y
Proxy uses SSL (https://)      [y/N]? N
Subdirectory on proxy server   [/]: 
Listen on address              [*]: 
Listen on port                 [8081]: 
Canonical URL                  [http://luyang-VirtualBox/]: 

*** Cache
*** 

*** Plugins
*** 

Installing plugins.
Install plugin codemirror-editor version v3.8.0 [y/N]? y
Installed codemirror-editor v3.8.0
Install plugin commit-message-length-validator version v3.8.0 [y/N]? y
Installed commit-message-length-validator v3.8.0
Install plugin delete-project version v3.8.0 [y/N]? y
Installed delete-project v3.8.0
Install plugin download-commands version v3.8.0 [y/N]? y
Installed download-commands v3.8.0
Install plugin gitiles version v3.8.0 [y/N]? y
Installed gitiles v3.8.0
Install plugin hooks version v3.8.0 [y/N]? y
Installed hooks v3.8.0
Install plugin plugin-manager version v3.8.0 [y/N]? y
Installed plugin-manager v3.8.0
Install plugin replication version v3.8.0 [y/N]? y
Installed replication v3.8.0
Install plugin reviewnotes version v3.8.0 [y/N]? y
Installed reviewnotes v3.8.0
Install plugin singleusergroup version v3.8.0 [y/N]? y
Installed singleusergroup v3.8.0
Install plugin webhooks version v3.8.0 [y/N]? y
Installed webhooks v3.8.0
Initializing plugins.

============================================================================
Welcome to the Gerrit community

Find more information on the homepage: https://www.gerritcodereview.com
Discuss Gerrit on the mailing list: https://groups.google.com/g/repo-discuss
============================================================================
Initialized /home/gerrit/gerrit
Init complete, reindexing accounts,changes,groups,projects with: reindex --site-path /home/gerrit/gerrit --threads 1 --index accounts --index changes --index groups --index projectsReindexed 0 documents in accounts index in 0.0s (0.0/s)
Index accounts in version 12 is ready
Reindexing groups:      100% (2/2)
Reindexed 2 documents in groups index in 0.2s (9.9/s)
Index groups in version 9 is ready
Reindexing changes: Slicing projects: 100% (2/2), done    
Reindexed 0 documents in changes index in 0.0s (0.0/s)
Index changes in version 82 is ready
Reindexing projects:    100% (2/2)
Reindexed 2 documents in projects index in 0.1s (25.0/s)
Index projects in version 5 is ready
Executing /home/gerrit/gerrit/bin/gerrit.sh start
Starting Gerrit Code Review: WARNING: Could not adjust Gerrit's process for the kernel's out-of-memory killer.
         This may be caused by /home/gerrit/gerrit/bin/gerrit.sh not being run as root.
         Consider changing the OOM score adjustment manually for Gerrit's PID=4510 with e.g.:
         echo '-1000' | sudo tee /proc/4510/oom_score_adj
OK
Waiting for server on luyang-VirtualBox:80 ... OK
Please open the following URL in the browser: http://luyang-VirtualBox/#/admin/projects/

配置 Gerrit

etc/gerrit.config

Install vcpkg

https://github.com/microsoft/vcpkg#quick-start-windows

powershell 终端执行如下命令:

git clone https://github.com/microsoft/vcpkg
.\vcpkg\bootstrap-vcpkg.bat

Install Package

# To install the libraries for your project, run:
# This will install x86 libraries by default.
.\vcpkg\vcpkg install [packages to install]

 # To install x64, run:
 .\vcpkg\vcpkg install [package name]:x64-windows

Tab-Completion/Auto-Completion

https://github.com/microsoft/vcpkg#tab-completionauto-completion

vcpkg supports auto-completion of commands, package names, and options in both powershell and bash. To enable tab-completion in the shell of your choice, run:

基本用法 date

$ date
2023年 02月 09日 星期四 16:22:29 CST

精确到 ms

$ date +'%d/%m/%Y %H:%M:%S:%3N'
09/02/2023 16:23:20:252

精确到 ns

$ date +'%d/%m/%Y %H:%M:%S:%N'
09/02/2023 16:23:24:918036405