chore: fix typos found by codespell
This commit is contained in:
parent
0d57e3645a
commit
66bc911652
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
## First login and sync
|
## First login and sync
|
||||||
|
|
||||||
When user logs in to the bridge for the first time, immediatelly starts the first sync.
|
When user logs in to the bridge for the first time, immediately starts the first sync.
|
||||||
First sync downloads all headers of all e-mails and creates database to have proper UIDs
|
First sync downloads all headers of all e-mails and creates database to have proper UIDs
|
||||||
and indexes for IMAP. See [database](database.md) for more information.
|
and indexes for IMAP. See [database](database.md) for more information.
|
||||||
|
|
||||||
By default, whenever it's possible, sync downloads only all e-mails maiblox which already
|
By default, whenever it's possible, sync downloads only all e-mails maiblox which already
|
||||||
have list of labels so we can construct all mailboxes (inbox, sent, trash, custom folders
|
have list of labels so we can construct all mailboxes (inbox, sent, trash, custom folders
|
||||||
and lables) without need to download each e-mail headers many times.
|
and labels) without need to download each e-mail headers many times.
|
||||||
|
|
||||||
Note that we need to download also bodies to calculate size of the e-mail and set proper
|
Note that we need to download also bodies to calculate size of the e-mail and set proper
|
||||||
content type (clients uses content type for guess if e-mail contains attachment)--but only
|
content type (clients uses content type for guess if e-mail contains attachment)--but only
|
||||||
|
@ -22,7 +22,7 @@ client right after adding account.
|
||||||
|
|
||||||
When account is added to client, client start the sync. This sync will ask Bridge app
|
When account is added to client, client start the sync. This sync will ask Bridge app
|
||||||
for all headers (done quickly) and then starts to download all bodies and attachment.
|
for all headers (done quickly) and then starts to download all bodies and attachment.
|
||||||
Unfortunatelly for some e-mail more than once if the same e-mail is in more mailboxes
|
Unfortunately for some e-mail more than once if the same e-mail is in more mailboxes
|
||||||
(e.g. inbox and all mail)--there is no way to tell over IMAP it's the same message.
|
(e.g. inbox and all mail)--there is no way to tell over IMAP it's the same message.
|
||||||
|
|
||||||
After successful login of client to IMAP, Bridge starts event loop. That periodicly ask
|
After successful login of client to IMAP, Bridge starts event loop. That periodicly ask
|
||||||
|
@ -37,7 +37,7 @@ sequenceDiagram
|
||||||
Note right of B: Set up PM account<br/>by user
|
Note right of B: Set up PM account<br/>by user
|
||||||
|
|
||||||
loop First sync
|
loop First sync
|
||||||
B ->> S: Fetch body and attachements
|
B ->> S: Fetch body and attachments
|
||||||
Note right of B: Build local database<br/>(e-mail UIDs)
|
Note right of B: Build local database<br/>(e-mail UIDs)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -58,8 +58,8 @@ sequenceDiagram
|
||||||
C ->> B: IMAP SELECT directory
|
C ->> B: IMAP SELECT directory
|
||||||
C ->> B: IMAP SEARCH e-mails UIDs
|
C ->> B: IMAP SEARCH e-mails UIDs
|
||||||
C ->> B: IMAP FETCH of e-mail UID
|
C ->> B: IMAP FETCH of e-mail UID
|
||||||
B ->> S: Fetch body and attachements
|
B ->> S: Fetch body and attachments
|
||||||
Note right of B: Decrypt message<br/>and attachement
|
Note right of B: Decrypt message<br/>and attachment
|
||||||
B ->> C: IMAP response
|
B ->> C: IMAP response
|
||||||
end
|
end
|
||||||
```
|
```
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
# Update mechanism of Bridge
|
# Update mechanism of Bridge
|
||||||
|
|
||||||
There are mulitple options how to change version of application:
|
There are multiple options how to change version of application:
|
||||||
* Automatic in-app update
|
* Automatic in-app update
|
||||||
* Manual in-app update
|
* Manual in-app update
|
||||||
* Manual install
|
* Manual install
|
||||||
|
|
||||||
In-app update ends with restarting bridge into new version. Automatic in-app
|
In-app update ends with restarting bridge into new version. Automatic in-app
|
||||||
update is downloading, verifying and installing the new version immediatelly
|
update is downloading, verifying and installing the new version immediately
|
||||||
without user confirmation. For manual in-app update user needs to confirm first.
|
without user confirmation. For manual in-app update user needs to confirm first.
|
||||||
Update is done from special update file published on website.
|
Update is done from special update file published on website.
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ The bridge is installed and executed differently for given OS:
|
||||||
|
|
||||||
* macOS app does not use launcher
|
* macOS app does not use launcher
|
||||||
* No launcher, only one executable
|
* No launcher, only one executable
|
||||||
* In-App udpate replaces the bridge files in installation path directly
|
* In-App update replaces the bridge files in installation path directly
|
||||||
|
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
|
|
|
@ -31,7 +31,7 @@ import (
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Disabled due to flakyness.
|
// Disabled due to flakiness.
|
||||||
func _TestBridge_SyncExistsWithErrorWhenTooManyFilesAreOpen(t *testing.T) { //nolint:unused
|
func _TestBridge_SyncExistsWithErrorWhenTooManyFilesAreOpen(t *testing.T) { //nolint:unused
|
||||||
var rlimitCurrent syscall.Rlimit
|
var rlimitCurrent syscall.Rlimit
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ public: // member functions.
|
||||||
void showSettings(QString const &reason); ///< Show the settings page.
|
void showSettings(QString const &reason); ///< Show the settings page.
|
||||||
void selectUser(QString const &userID, bool forceShowWindow, QString const &reason); ///< Select the user and display its account details (or login screen).
|
void selectUser(QString const &userID, bool forceShowWindow, QString const &reason); ///< Select the user and display its account details (or login screen).
|
||||||
|
|
||||||
// invokable methods can be called from QML. They generally return a value, which slots cannot do.
|
// invocable methods can be called from QML. They generally return a value, which slots cannot do.
|
||||||
Q_INVOKABLE static QString buildYear(); ///< Return the application build year.
|
Q_INVOKABLE static QString buildYear(); ///< Return the application build year.
|
||||||
Q_INVOKABLE QPoint getCursorPos() const; ///< Retrieve the cursor position.
|
Q_INVOKABLE QPoint getCursorPos() const; ///< Retrieve the cursor position.
|
||||||
Q_INVOKABLE bool isPortFree(int port) const; ///< Check if a given network port is available.
|
Q_INVOKABLE bool isPortFree(int port) const; ///< Check if a given network port is available.
|
||||||
|
|
|
@ -63,7 +63,7 @@ BRIDGE_BUILD_ENV= ${BRIDGE_BUILD_ENV:-"dev"}
|
||||||
git submodule update --init --recursive ${VCPKG_ROOT}
|
git submodule update --init --recursive ${VCPKG_ROOT}
|
||||||
check_exit "Failed to initialize vcpkg as a submodule."
|
check_exit "Failed to initialize vcpkg as a submodule."
|
||||||
|
|
||||||
echo submodule udpated
|
echo submodule updated
|
||||||
|
|
||||||
VCPKG_EXE="${VCPKG_ROOT}/vcpkg"
|
VCPKG_EXE="${VCPKG_ROOT}/vcpkg"
|
||||||
VCPKG_BOOTSTRAP="${VCPKG_ROOT}/bootstrap-vcpkg.sh"
|
VCPKG_BOOTSTRAP="${VCPKG_ROOT}/bootstrap-vcpkg.sh"
|
||||||
|
|
|
@ -101,7 +101,7 @@ CREATE_SUBDIRS = YES
|
||||||
# level increment doubles the number of directories, resulting in 4096
|
# level increment doubles the number of directories, resulting in 4096
|
||||||
# directories at level 8 which is the default and also the maximum value. The
|
# directories at level 8 which is the default and also the maximum value. The
|
||||||
# sub-directories are organized in 2 levels, the first level always has a fixed
|
# sub-directories are organized in 2 levels, the first level always has a fixed
|
||||||
# numer of 16 directories.
|
# number of 16 directories.
|
||||||
# Minimum value: 0, maximum value: 8, default value: 8.
|
# Minimum value: 0, maximum value: 8, default value: 8.
|
||||||
# This tag requires that the tag CREATE_SUBDIRS is set to YES.
|
# This tag requires that the tag CREATE_SUBDIRS is set to YES.
|
||||||
|
|
||||||
|
|
|
@ -78,10 +78,10 @@ void FocusGRPCClient::removeServiceConfigFile(QString const &configDir) {
|
||||||
|
|
||||||
|
|
||||||
//****************************************************************************************************************************************************
|
//****************************************************************************************************************************************************
|
||||||
/// \param[in] timeoutMs The timeout for the connexion.
|
/// \param[in] timeoutMs The timeout for the connection.
|
||||||
/// \param[in] port The gRPC server port.
|
/// \param[in] port The gRPC server port.
|
||||||
/// \param[out] outError if not null and the function returns false.
|
/// \param[out] outError if not null and the function returns false.
|
||||||
/// \return true iff the connexion was successfully established.
|
/// \return true iff the connection was successfully established.
|
||||||
//****************************************************************************************************************************************************
|
//****************************************************************************************************************************************************
|
||||||
bool FocusGRPCClient::connectToServer(qint64 timeoutMs, quint16 port, QString *outError) {
|
bool FocusGRPCClient::connectToServer(qint64 timeoutMs, quint16 port, QString *outError) {
|
||||||
try {
|
try {
|
||||||
|
@ -97,7 +97,7 @@ bool FocusGRPCClient::connectToServer(qint64 timeoutMs, quint16 port, QString *o
|
||||||
}
|
}
|
||||||
|
|
||||||
if (channel_->GetState(true) != GRPC_CHANNEL_READY) {
|
if (channel_->GetState(true) != GRPC_CHANNEL_READY) {
|
||||||
throw Exception("Connexion check with focus service failed.");
|
throw Exception("Connection check with focus service failed.");
|
||||||
}
|
}
|
||||||
|
|
||||||
log_.debug(QString("Successfully connected to focus gRPC service."));
|
log_.debug(QString("Successfully connected to focus gRPC service."));
|
||||||
|
|
|
@ -59,7 +59,7 @@ void GRPCClient::removeServiceConfigFile(QString const &configDir) {
|
||||||
//****************************************************************************************************************************************************
|
//****************************************************************************************************************************************************
|
||||||
/// \param[in] sessionID The sessionID.
|
/// \param[in] sessionID The sessionID.
|
||||||
/// \param[in] timeoutMs The timeout in milliseconds
|
/// \param[in] timeoutMs The timeout in milliseconds
|
||||||
/// \param[in] serverProcess An optional server process to monitor. If the process it, no need and retry, as connexion cannot be established. Ignored if null.
|
/// \param[in] serverProcess An optional server process to monitor. If the process it, no need and retry, as connection cannot be established. Ignored if null.
|
||||||
/// \return The service config.
|
/// \return The service config.
|
||||||
//****************************************************************************************************************************************************
|
//****************************************************************************************************************************************************
|
||||||
GRPCConfig GRPCClient::waitAndRetrieveServiceConfig(QString const & sessionID, QString const &configDir, qint64 timeoutMs,
|
GRPCConfig GRPCClient::waitAndRetrieveServiceConfig(QString const & sessionID, QString const &configDir, qint64 timeoutMs,
|
||||||
|
@ -118,7 +118,7 @@ void GRPCClient::setLog(Log *log) {
|
||||||
//****************************************************************************************************************************************************
|
//****************************************************************************************************************************************************
|
||||||
/// \param[in] sessionID The sessionID.
|
/// \param[in] sessionID The sessionID.
|
||||||
/// \param[in] configDir The configuration directory
|
/// \param[in] configDir The configuration directory
|
||||||
/// \param[in] serverProcess An optional server process to monitor. If the process it, no need and retry, as connexion cannot be established. Ignored if null.
|
/// \param[in] serverProcess An optional server process to monitor. If the process it, no need and retry, as connection cannot be established. Ignored if null.
|
||||||
/// \return true iff the connection was successful.
|
/// \return true iff the connection was successful.
|
||||||
//****************************************************************************************************************************************************
|
//****************************************************************************************************************************************************
|
||||||
void GRPCClient::connectToServer(QString const &sessionID, QString const &configDir, GRPCConfig const &config, ProcessMonitor *serverProcess) {
|
void GRPCClient::connectToServer(QString const &sessionID, QString const &configDir, GRPCConfig const &config, ProcessMonitor *serverProcess) {
|
||||||
|
@ -150,7 +150,7 @@ void GRPCClient::connectToServer(QString const &sessionID, QString const &config
|
||||||
int i = 0;
|
int i = 0;
|
||||||
while (true) {
|
while (true) {
|
||||||
if (serverProcess && serverProcess->getStatus().ended) {
|
if (serverProcess && serverProcess->getStatus().ended) {
|
||||||
throw Exception("Bridge application ended before gRPC connexion could be established.", QString(), __FUNCTION__,
|
throw Exception("Bridge application ended before gRPC connection could be established.", QString(), __FUNCTION__,
|
||||||
tailOfLatestBridgeLog(sessionID));
|
tailOfLatestBridgeLog(sessionID));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -461,7 +461,7 @@ func (s *Service) Login2FA(_ context.Context, login *LoginRequest) (*emptypb.Emp
|
||||||
defer async.HandlePanic(s.panicHandler)
|
defer async.HandlePanic(s.panicHandler)
|
||||||
|
|
||||||
if s.auth.UID == "" || s.authClient == nil {
|
if s.auth.UID == "" || s.authClient == nil {
|
||||||
s.log.Errorf("Login 2FA: authethication incomplete %s %p", s.auth.UID, s.authClient)
|
s.log.Errorf("Login 2FA: authentication incomplete %s %p", s.auth.UID, s.authClient)
|
||||||
_ = s.SendEvent(NewLoginError(LoginErrorType_TFA_ABORT, "Missing authentication, try again."))
|
_ = s.SendEvent(NewLoginError(LoginErrorType_TFA_ABORT, "Missing authentication, try again."))
|
||||||
s.loginClean()
|
s.loginClean()
|
||||||
return
|
return
|
||||||
|
|
|
@ -355,7 +355,7 @@ func (user *User) syncMessages(
|
||||||
case syncLimits.MaxSyncMemory == 2*Gigabyte:
|
case syncLimits.MaxSyncMemory == 2*Gigabyte:
|
||||||
// Increasing the max download capacity has very little effect on sync speed. We could increase the download
|
// Increasing the max download capacity has very little effect on sync speed. We could increase the download
|
||||||
// memory but the user would see less sync notifications. A smaller value here leads to more frequent
|
// memory but the user would see less sync notifications. A smaller value here leads to more frequent
|
||||||
// updates. Additionally, most of ot sync time is spent in the message building.
|
// updates. Additionally, most of sync time is spent in the message building.
|
||||||
syncMaxDownloadRequestMem = syncLimits.MaxDownloadRequestMem
|
syncMaxDownloadRequestMem = syncLimits.MaxDownloadRequestMem
|
||||||
// Currently limited so that if a user has multiple accounts active it also doesn't cause excessive memory usage.
|
// Currently limited so that if a user has multiple accounts active it also doesn't cause excessive memory usage.
|
||||||
syncMaxMessageBuildingMem = syncLimits.MaxMessageBuildingMem
|
syncMaxMessageBuildingMem = syncLimits.MaxMessageBuildingMem
|
||||||
|
|
|
@ -24,7 +24,7 @@ import (
|
||||||
|
|
||||||
var ErrInvalidReplyType = errors.New("reply type does not match")
|
var ErrInvalidReplyType = errors.New("reply type does not match")
|
||||||
|
|
||||||
// Utilities to implement Chanel Procedure Calls. Similar in concept to RPC, but with between go-routines.
|
// Utilities to implement Channel Procedure Calls. Similar in concept to RPC, but with between go-routines.
|
||||||
|
|
||||||
// Request contains the data for a request as well as the means to reply to a request.
|
// Request contains the data for a request as well as the means to reply to a request.
|
||||||
type Request struct {
|
type Request struct {
|
||||||
|
|
|
@ -115,7 +115,7 @@ func (h *macOSHelper) Get(secretURL string) (string, string, error) {
|
||||||
|
|
||||||
results, err := keychain.QueryItem(query)
|
results, err := keychain.QueryItem(query)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
l.WithError(err).Error("Querry item failed")
|
l.WithError(err).Error("Query item failed")
|
||||||
return "", "", parseError(err)
|
return "", "", parseError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -205,7 +205,7 @@ func EncodeHeader(s string) string {
|
||||||
return mime.QEncoding.Encode("utf-8", s)
|
return mime.QEncoding.Encode("utf-8", s)
|
||||||
}
|
}
|
||||||
|
|
||||||
// DecodeCharset decodes the orginal using content type parameters.
|
// DecodeCharset decodes the original using content type parameters.
|
||||||
// If the charset parameter is missing it checks that the content is valid utf8.
|
// If the charset parameter is missing it checks that the content is valid utf8.
|
||||||
// If it isn't, it checks if it's embedded in the html/xml.
|
// If it isn't, it checks if it's embedded in the html/xml.
|
||||||
// If it isn't, it falls back to windows-1252.
|
// If it isn't, it falls back to windows-1252.
|
||||||
|
@ -240,7 +240,7 @@ func DecodeCharset(original []byte, contentType string) ([]byte, error) {
|
||||||
logrus.WithField("encoding", name).Warn("Determined encoding but was not certain")
|
logrus.WithField("encoding", name).Warn("Determined encoding but was not certain")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reencode as UTF-8.
|
// Re-encode as UTF-8.
|
||||||
decoded, err := encoding.NewDecoder().Bytes(original)
|
decoded, err := encoding.NewDecoder().Bytes(original)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return original, errors.Wrap(err, "failed to decode as windows-1252")
|
return original, errors.Wrap(err, "failed to decode as windows-1252")
|
||||||
|
|
|
@ -446,7 +446,7 @@ func TestEncodeReader(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if bytes.Equal(decoded, expected) {
|
if bytes.Equal(decoded, expected) {
|
||||||
// fmt.Println("Succesfull decoding of ", val.params, ":", string(decoded))
|
// fmt.Println("Successful decoding of ", val.params, ":", string(decoded))
|
||||||
} else {
|
} else {
|
||||||
t.Error("Wrong encoding of ", val.charset, ".Expected\n", expected, "\nbut have\n", decoded)
|
t.Error("Wrong encoding of ", val.charset, ".Expected\n", expected, "\nbut have\n", decoded)
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@ import (
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
// maxFileSize limit tre single file size after decopression is not larger than 1GB.
|
// maxFileSize limit the single file size after decompression is not larger than 1GB.
|
||||||
const maxFileSize = int64(1 * 1024 * 1024 * 1024) // 1 GB
|
const maxFileSize = int64(1 * 1024 * 1024 * 1024) // 1 GB
|
||||||
|
|
||||||
// ErrFileTooLarge returned when decompressed file is too large.
|
// ErrFileTooLarge returned when decompressed file is too large.
|
||||||
|
|
|
@ -178,7 +178,7 @@
|
||||||
- Improved Sentry reporting
|
- Improved Sentry reporting
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
- Ensure messageID is properly removed from DB when it is no logner present on the API
|
- Ensure messageID is properly removed from DB when it is no longer present on the API
|
||||||
|
|
||||||
|
|
||||||
## v2.1.0
|
## v2.1.0
|
||||||
|
@ -372,7 +372,7 @@ New local cache
|
||||||
- Added IMAP requests to the logs for easier debugging
|
- Added IMAP requests to the logs for easier debugging
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
- NoGUI bulid
|
- NoGUI build
|
||||||
- Background of GUI welcome message
|
- Background of GUI welcome message
|
||||||
- Incorrect total mailbox size displayed in Apple Mail
|
- Incorrect total mailbox size displayed in Apple Mail
|
||||||
|
|
||||||
|
|
|
@ -89,7 +89,7 @@
|
||||||
- Improved Sentry reporting
|
- Improved Sentry reporting
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
- Ensure messageID is properly removed from DB when it is no logner present on the API
|
- Ensure messageID is properly removed from DB when it is no longer present on the API
|
||||||
|
|
||||||
|
|
||||||
## v2.1.0
|
## v2.1.0
|
||||||
|
@ -251,7 +251,7 @@ Other
|
||||||
- Fixed GUI freeze while switching to early update channel
|
- Fixed GUI freeze while switching to early update channel
|
||||||
- Fixed Bridge autostart
|
- Fixed Bridge autostart
|
||||||
- Improved signing of update packages
|
- Improved signing of update packages
|
||||||
- NoGUI bulid
|
- NoGUI build
|
||||||
- Background of GUI welcome message
|
- Background of GUI welcome message
|
||||||
- Incorrect total mailbox size displayed in Apple Mail
|
- Incorrect total mailbox size displayed in Apple Mail
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
This is version of libqcocoa obtained from original Qt 5.13.0 source available at https://github.com/qt/qtbase with patch from cocoa.patch applyed.
|
This is version of libqcocoa obtained from original Qt 5.13.0 source available at https://github.com/qt/qtbase with patch from cocoa.patch applied.
|
||||||
|
|
||||||
Please refer to https://bugreports.qt.io/browse/QTBUG-88600 for patch origin and https://doc.qt.io/qt-5/macos-building.html for instructions how to build Qt from source.
|
Please refer to https://bugreports.qt.io/browse/QTBUG-88600 for patch origin and https://doc.qt.io/qt-5/macos-building.html for instructions how to build Qt from source.
|
||||||
|
|
|
@ -31,7 +31,7 @@ echo "0">$ERROR_COUNT_FILE
|
||||||
# -- Helper functions -- #
|
# -- Helper functions -- #
|
||||||
##########################
|
##########################
|
||||||
|
|
||||||
# err print out a given error ($2) and line where it hapens ($1),
|
# err print out a given error ($2) and line where it happens ($1),
|
||||||
# also it increases count of errors.
|
# also it increases count of errors.
|
||||||
err () {
|
err () {
|
||||||
echo "CHANGELOG-LINTER: $2 on the following line:"
|
echo "CHANGELOG-LINTER: $2 on the following line:"
|
||||||
|
@ -92,7 +92,7 @@ check_change_types () {
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
"### Added"|"### Changed"|"### Deprecated"|"### Removed"|"### Fixed"|"### Security") ;; # Standard keepachangelog.com compliant types.
|
"### Added"|"### Changed"|"### Deprecated"|"### Removed"|"### Fixed"|"### Security") ;; # Standard keepachangelog.com compliant types.
|
||||||
"### Release notes"|"### Fixed bugs") ;; # Bridge aditional in app release notes types.
|
"### Release notes"|"### Fixed bugs") ;; # Bridge additional in app release notes types.
|
||||||
"### Guiding Principles"|"### Types of changes") ;; # Ignoring guide at the end of the changelog.
|
"### Guiding Principles"|"### Types of changes") ;; # Ignoring guide at the end of the changelog.
|
||||||
*) err "$1" "Change type must be one of the Added, Changed, Deprecated, Removed, Fixed, Hoftix"
|
*) err "$1" "Change type must be one of the Added, Changed, Deprecated, Removed, Fixed, Hoftix"
|
||||||
esac
|
esac
|
||||||
|
|
|
@ -45,7 +45,7 @@ generate_dep_licenses(){
|
||||||
grep -E $'^\t[^=>]*$' $src | sed -r 's/\t([^ ]*) v.*/\1/g' > "$tmpDepLicenses"
|
grep -E $'^\t[^=>]*$' $src | sed -r 's/\t([^ ]*) v.*/\1/g' > "$tmpDepLicenses"
|
||||||
grep -E $'^\t.*=>.*v.*$' $src | sed -r 's/^.*=> ([^ ]*)( v.*)?/\1/g' >> "$tmpDepLicenses"
|
grep -E $'^\t.*=>.*v.*$' $src | sed -r 's/^.*=> ([^ ]*)( v.*)?/\1/g' >> "$tmpDepLicenses"
|
||||||
|
|
||||||
# Replace each line with formated link
|
# Replace each line with formatted link
|
||||||
sed -i -r '/^github.com\/therecipe\/qt\/internal\/binding\/files\/docs\//d;' "$tmpDepLicenses"
|
sed -i -r '/^github.com\/therecipe\/qt\/internal\/binding\/files\/docs\//d;' "$tmpDepLicenses"
|
||||||
sed -i -r 's|^(.*)/([[:alnum:]-]+)/(v[[:digit:]]+)$|* [\2](https://\1/\2/\3)|g' "$tmpDepLicenses"
|
sed -i -r 's|^(.*)/([[:alnum:]-]+)/(v[[:digit:]]+)$|* [\2](https://\1/\2/\3)|g' "$tmpDepLicenses"
|
||||||
sed -i -r 's|^(.*)/([[:alnum:]-]+)$|* [\2](https://\1/\2)|g' "$tmpDepLicenses"
|
sed -i -r 's|^(.*)/([[:alnum:]-]+)$|* [\2](https://\1/\2)|g' "$tmpDepLicenses"
|
||||||
|
|
|
@ -20,10 +20,10 @@
|
||||||
# The Qt libs are dynamically loaded with rules like: `@rpath/QtGui.framework/Versions/5/QtGui`
|
# The Qt libs are dynamically loaded with rules like: `@rpath/QtGui.framework/Versions/5/QtGui`
|
||||||
# @rpath instructs the dynamic linker to search a list of paths in order to locate the framework
|
# @rpath instructs the dynamic linker to search a list of paths in order to locate the framework
|
||||||
# The rules can be listed using `otool -l "${path_to_binary}"`
|
# The rules can be listed using `otool -l "${path_to_binary}"`
|
||||||
# The building process of therecipe/qt or qmake leaves the rules with additinal unwanted paths
|
# The building process of therecipe/qt or qmake leaves the rules with additional unwanted paths
|
||||||
# + absolute path to build directory
|
# + absolute path to build directory
|
||||||
# + dummy replacement `/break_the_rpath`
|
# + dummy replacement `/break_the_rpath`
|
||||||
# We need to manually remove those and add the path relative to exectuable: `@executable_path/../Frameworks`
|
# We need to manually remove those and add the path relative to executable: `@executable_path/../Frameworks`
|
||||||
|
|
||||||
path_to_binary=$1
|
path_to_binary=$1
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue